{"_id":"rsbuild-plugin-glsl","_rev":"3-cd077853c813c40600dce3a7dec7bd7b","name":"rsbuild-plugin-glsl","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"rsbuild-plugin-glsl","version":"1.0.0","author":{"name":"sakitam-fdd","email":"smilefdd@gmail.com"},"license":"MIT","_id":"rsbuild-plugin-glsl@1.0.0","maintainers":[{"name":"sakitam-fdd","email":"smilefdd@gmail.com"}],"homepage":"https://github.com/sakitam-fdd/rsbuild-plugin-glsl#readme","bugs":{"url":"https://github.com/sakitam-fdd/rsbuild-plugin-glsl/issues"},"dist":{"shasum":"73c1f29571fc96491d70cd7e6763c362270c17e8","tarball":"https://registry.npmjs.org/rsbuild-plugin-glsl/-/rsbuild-plugin-glsl-1.0.0.tgz","fileCount":18,"integrity":"sha512-Y/hCZqRNlg+1w9sUsiyWenI8MLrUJFCcuSevja6EbKAjD3GJExdbx+DOheFXa27HCOORqflzrIHwdiprwkhPlg==","signatures":[{"sig":"MEQCIHIeA/Zfa7O/lBQ9ZO4wMrVS0SmvbGI8ozxVOmA0xjXhAiA9bWFH1ezHOphmpReYivHY5px3AbCF27Gi0q46RCKf6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67970},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"cz-customizable":{"config":".cz-config.cjs"}},"module":"./dist/index.js","engines":{"node":">= 20.15.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./ext":{"types":"./ext.d.ts"}},"gitHead":"c1d32acec0ae81631a30516e050d9fb88687dda2","scripts":{"dev":"tsup-node --entry src/index.ts --entry src/glsl-loader.ts --sourcemap --format esm,cjs --watch --dts --shims","lint":"eslint src --ext js,jsx,ts,tsx","test":"playwright test","build":"tsup-node --entry src/index.ts --entry src/glsl-loader.ts --sourcemap --format esm,cjs --dts --shims","commit":"git add . && cz","format":"prettier --write \"**/**/*.{ts,tsx,js,vue,md}\"","prepare":"husky install","pretest":"pnpm run build","prettier":"prettier --write .","lint:write":"eslint src --ext js,jsx,ts,tsx --write","preinstall":"npx only-allow pnpm","prepublishOnly":"npm run build","semantic-release":"semantic-release --branches main"},"_npmUser":{"name":"sakitam-fdd","email":"smilefdd@gmail.com"},"gitHooks":{"commit-msg":"commitlint -E GIT_PARAMS","pre-commit":"lint-staged --allow-empty"},"repository":{"url":"git+https://github.com/sakitam-fdd/rsbuild-plugin-glsl.git","type":"git"},"_npmVersion":"10.7.0","description":"Import, inline (and compress) GLSL shader files","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","prettier --write"],"package.json":["prettier --write"],"*.{css,less,scss,html,md}":["prettier --write"]},"_nodeVersion":"20.15.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.6.0","devDependencies":{"tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","prettier":"^3.2.5","playwright":"^1.45.3","typescript":"^5.5.2","@types/node":"^20.14.1","lint-staged":"^15.2.2","@rsbuild/core":"^1.0.1-beta.7","@commitlint/cli":"^18.6.1","@playwright/test":"^1.45.3","semantic-release":"^24.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^10.1.3","@aurorafe/eslint-config-ts":"^1.1.0","@semantic-release/changelog":"^6.0.3","@aurorafe/eslint-config-base":"^1.1.0","@commitlint/config-conventional":"^18.6.2","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1"},"peerDependencies":{"@rsbuild/core":"1.x"},"peerDependenciesMeta":{"@rsbuild/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/rsbuild-plugin-glsl_1.0.0_1722443986093_0.5132736511133309","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"rsbuild-plugin-glsl","version":"1.0.1","author":{"name":"sakitam-fdd","email":"smilefdd@gmail.com"},"license":"MIT","_id":"rsbuild-plugin-glsl@1.0.1","maintainers":[{"name":"sakitam-fdd","email":"smilefdd@gmail.com"}],"homepage":"https://github.com/sakitam-fdd/rsbuild-plugin-glsl#readme","bugs":{"url":"https://github.com/sakitam-fdd/rsbuild-plugin-glsl/issues"},"dist":{"shasum":"f2f71cc53ee7126557ae3ef073e8b8a594ad4476","tarball":"https://registry.npmjs.org/rsbuild-plugin-glsl/-/rsbuild-plugin-glsl-1.0.1.tgz","fileCount":18,"integrity":"sha512-MBIusEc7IN9I8U4UBHqlGa48ZnutBQ2+aIpbDrzCO+YJve1aBc+tI3OGlhRUjMi/P0kesda4UZxyraXsDtEw5w==","signatures":[{"sig":"MEYCIQCNXGY8IzFZzT8GbPEs0txqwdRuT4TcMtN9tk39dvrtxwIhAJIgTYNEHKTphmpdDHWL8uSTn0Wa138uKilvUXu5XEDI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67970},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"},"cz-customizable":{"config":".cz-config.cjs"}},"module":"./dist/index.js","engines":{"node":">= 20.15.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./ext":{"types":"./ext.d.ts"}},"gitHead":"94eef768dcb1f63e2f5389cc0897c968e2be16ba","scripts":{"dev":"tsup-node --entry src/index.ts --entry src/glsl-loader.ts --sourcemap --format esm,cjs --watch --dts --shims","lint":"eslint src --ext js,jsx,ts,tsx","test":"playwright test","build":"tsup-node --entry src/index.ts --entry src/glsl-loader.ts --sourcemap --format esm,cjs --dts --shims","commit":"git add . && cz","format":"prettier --write \"**/**/*.{ts,tsx,js,vue,md}\"","prepare":"husky install","pretest":"pnpm run build","prettier":"prettier --write .","lint:write":"eslint src --ext js,jsx,ts,tsx --write","preinstall":"npx only-allow pnpm","prepublishOnly":"npm run build","semantic-release":"semantic-release --branches main"},"_npmUser":{"name":"sakitam-fdd","email":"smilefdd@gmail.com"},"gitHooks":{"commit-msg":"commitlint -E GIT_PARAMS","pre-commit":"lint-staged --allow-empty"},"repository":{"url":"git+https://github.com/sakitam-fdd/rsbuild-plugin-glsl.git","type":"git"},"_npmVersion":"10.7.0","description":"Import, inline (and compress) GLSL shader files","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","prettier --write"],"package.json":["prettier --write"],"*.{css,less,scss,html,md}":["prettier --write"]},"_nodeVersion":"20.15.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.6.0","devDependencies":{"tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","prettier":"^3.2.5","playwright":"^1.45.3","typescript":"^5.5.2","@types/node":"^20.14.1","lint-staged":"^15.2.2","@rsbuild/core":"^1.0.1-beta.7","@commitlint/cli":"^18.6.1","@playwright/test":"^1.45.3","semantic-release":"^24.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^10.1.3","@aurorafe/eslint-config-ts":"^1.1.0","@semantic-release/changelog":"^6.0.3","@aurorafe/eslint-config-base":"^1.1.0","@commitlint/config-conventional":"^18.6.2","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1"},"peerDependencies":{"@rsbuild/core":"1.x"},"peerDependenciesMeta":{"@rsbuild/core":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/rsbuild-plugin-glsl_1.0.1_1722444697657_0.4958694273445292","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"rsbuild-plugin-glsl","version":"1.2.0","description":"Import, inline and minify GLSL, WGSL and shader chunks in Rsbuild","keywords":["rsbuild","rspack","glsl","wgsl","webgl","webgpu","shader","plugin"],"license":"MIT","type":"module","sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/types/esm/index.d.ts","exports":{".":{"import":{"types":"./dist/types/esm/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/types/cjs/index.d.cts","default":"./dist/index.cjs"}},"./ext":{"import":{"types":"./ext.d.ts","default":"./dist/ext.js"},"require":{"types":"./ext.d.cts","default":"./dist/ext.cjs"}},"./package.json":"./package.json"},"repository":{"type":"git","url":"git+https://github.com/sakitam-fdd/rsbuild-plugin-glsl.git"},"bugs":{"url":"https://github.com/sakitam-fdd/rsbuild-plugin-glsl/issues"},"homepage":"https://sakitam-fdd.github.io/rsbuild-plugin-glsl/","author":{"name":"sakitam-fdd","email":"smilefdd@gmail.com"},"scripts":{"build":"rslib build","dev":"rslib build -w","lint":"rslint src test website && prettier --check .","lint:fix":"rslint --fix src test website && prettier --write .","typecheck":"pnpm build && tsc --noEmit && tsc -p tsconfig.test.json --noEmit && pnpm --filter @rsbuild-plugin-glsl/website typecheck","test":"pnpm build && rstest run","test:watch":"rstest","test:integration":"pnpm build && rstest run test/integration","docs:dev":"pnpm build && pnpm --filter @rsbuild-plugin-glsl/website dev","docs:build":"pnpm build && pnpm --filter @rsbuild-plugin-glsl/website build","docs:preview":"pnpm --filter @rsbuild-plugin-glsl/website preview","pack:check":"pnpm build && publint && attw --pack .","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm pack:check && pnpm docs:build","release:version":"pnpx bumpp","semantic-release":"semantic-release","prepublishOnly":"pnpm pack:check"},"devDependencies":{"@arethetypeswrong/cli":"^0.18.5","@rsbuild/core":"^2.1.6","@rslib/core":"^0.23.2","@rslint/core":"^0.7.0","@rstest/core":"^0.11.2","@types/node":"^24.13.3","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/git":"^10.0.1","@semantic-release/release-notes-generator":"^14.1.1","@semantic-release/github":"^12.0.9","@semantic-release/npm":"^13.1.5","jiti":"^2.7.0","semantic-release":"^25.0.7","prettier":"^3.9.5","publint":"^0.3.21","typescript":"^7.0.2"},"peerDependencies":{"@rsbuild/core":"^1.0.0 || ^2.0.0"},"peerDependenciesMeta":{"@rsbuild/core":{"optional":true}},"engines":{"node":"^20.19.0 || >=22.12.0","pnpm":">=11.13.1"},"packageManager":"pnpm@11.13.1","publishConfig":{"access":"public","provenance":true,"registry":"https://registry.npmjs.org/"},"gitHead":"3910ba3fd373094f35fb403792f52ef49c27addf","_id":"rsbuild-plugin-glsl@1.2.0","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-qbLICRgIxolcviUE3qF+CBlfLZNiTDCQR87jgriGtcAm2DWM+sZaSfM/pHceYxqqzhD0as0PfFvK8h57XYrvZg==","shasum":"3ec3941ce489dc08652d75db716d8bc71d660302","tarball":"https://registry.npmjs.org/rsbuild-plugin-glsl/-/rsbuild-plugin-glsl-1.2.0.tgz","fileCount":28,"unpackedSize":124190,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/rsbuild-plugin-glsl@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAZd+5uYomzr+YCtIg7wG8HPXcVnZqGFNvNvmn7aJ7pkAiAx81VCpAxF4rbVYkPprIDFKxn/OH9M5wz0yAD9Q9DwJg=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9457ba25-7a76-46eb-b504-e8d038e2813e"}},"directories":{},"maintainers":[{"name":"sakitam-fdd","email":"smilefdd@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rsbuild-plugin-glsl_1.2.0_1784271752225_0.16487635521746746"},"_hasShrinkwrap":false}},"time":{"created":"2024-07-31T16:39:46.000Z","modified":"2026-07-17T07:02:32.801Z","1.0.0":"2024-07-31T16:39:46.427Z","1.0.1":"2024-07-31T16:51:37.836Z","1.2.0":"2026-07-17T07:02:32.409Z"},"bugs":{"url":"https://github.com/sakitam-fdd/rsbuild-plugin-glsl/issues"},"author":{"name":"sakitam-fdd","email":"smilefdd@gmail.com"},"license":"MIT","homepage":"https://sakitam-fdd.github.io/rsbuild-plugin-glsl/","repository":{"type":"git","url":"git+https://github.com/sakitam-fdd/rsbuild-plugin-glsl.git"},"description":"Import, inline and minify GLSL, WGSL and shader chunks in Rsbuild","maintainers":[{"name":"sakitam-fdd","email":"smilefdd@gmail.com"}],"readme":"# rsbuild-plugin-glsl\n\n[中文](#中文) · [English](#english) · [Documentation](https://sakitam-fdd.github.io/rsbuild-plugin-glsl/)\n\n[![npm](https://img.shields.io/npm/v/rsbuild-plugin-glsl?style=flat-square)](https://www.npmjs.com/package/rsbuild-plugin-glsl)\n[![CI](https://github.com/sakitam-fdd/rsbuild-plugin-glsl/actions/workflows/ci.yml/badge.svg)](https://github.com/sakitam-fdd/rsbuild-plugin-glsl/actions/workflows/ci.yml)\n[![license](https://img.shields.io/npm/l/rsbuild-plugin-glsl?style=flat-square)](./LICENSE)\n\n## 中文\n\n为 Rsbuild 提供 GLSL、WGSL 和模块化 shader 文件导入。支持递归 `#include`、依赖监听、重复模块检测/去重、异步后处理和生产压缩。\n\n### 安装\n\n```bash\npnpm add -D rsbuild-plugin-glsl\n```\n\n```ts title=\"rsbuild.config.ts\"\nimport { defineConfig } from '@rsbuild/core';\nimport { pluginGlsl } from 'rsbuild-plugin-glsl';\n\nexport default defineConfig(({ envMode }) => ({\n  plugins: [\n    pluginGlsl({\n      minify: envMode === 'production',\n      removeDuplicatedImports: true,\n    }),\n  ],\n}));\n```\n\n```glsl title=\"main.frag\"\n#include chunks/color;\n\nvoid main() {\n  gl_FragColor = getColor();\n}\n```\n\n```ts\nimport fragmentShader from './main.frag';\n```\n\nTypeScript 项目在 `compilerOptions.types` 中加入 `rsbuild-plugin-glsl/ext`。\n\n完整的[中文指南](https://sakitam-fdd.github.io/rsbuild-plugin-glsl/)、[配置 API](https://sakitam-fdd.github.io/rsbuild-plugin-glsl/api/options)和[实时示例](https://sakitam-fdd.github.io/rsbuild-plugin-glsl/examples/)由 Rspress 构建。\n\n## English\n\nImport GLSL, WGSL and modular shader files in Rsbuild. Recursive includes, dependency watching, duplicate detection/removal, async post-processing and production minification are built in.\n\n### Install\n\n```bash\nnpm install --save-dev rsbuild-plugin-glsl\n```\n\n```ts title=\"rsbuild.config.ts\"\nimport { defineConfig } from '@rsbuild/core';\nimport { pluginGlsl } from 'rsbuild-plugin-glsl';\n\nexport default defineConfig(({ envMode }) => ({\n  plugins: [\n    pluginGlsl({\n      minify: envMode === 'production',\n      removeDuplicatedImports: true,\n    }),\n  ],\n}));\n```\n\n```ts\nimport fragmentShader from './main.frag';\n```\n\nAdd `rsbuild-plugin-glsl/ext` to `compilerOptions.types` in TypeScript applications.\n\nRead the full [English guide](https://sakitam-fdd.github.io/rsbuild-plugin-glsl/en/guide/getting-started), [API reference](https://sakitam-fdd.github.io/rsbuild-plugin-glsl/en/api/options) and [live examples](https://sakitam-fdd.github.io/rsbuild-plugin-glsl/en/examples/).\n\n## Options\n\n| Option                    | Default                 | Notes                                  |\n| ------------------------- | ----------------------- | -------------------------------------- |\n| `include`                 | shader extension RegExp | Rspack `RuleSetCondition`              |\n| `exclude`                 | `undefined`             | Rspack `RuleSetCondition`              |\n| `defaultExtension`        | `'glsl'`                | Appended to extension-less chunks      |\n| `warnDuplicatedImports`   | `true`                  | One warning per importer/chunk pair    |\n| `removeDuplicatedImports` | `false`                 | Inline a chunk once per entry graph    |\n| `importKeywords`          | `['#include']`          | Custom directives are supported        |\n| `onComplete`              | `undefined`             | Async final processor                  |\n| `minify`                  | `false`                 | Boolean or custom async processor      |\n| `compress`                | `false`                 | Deprecated alias of `minify`           |\n| `watch`                   | `true`                  | Register all chunks with Rspack        |\n| `root`                    | `'/'`                   | Project-relative base for root imports |\n\n## Compatibility and reliability\n\n- Rsbuild `1.x` and `2.x`; Node.js `^20.19.0 || >=22.12.0`.\n- ESM and CommonJS package conditions with matching `.d.ts` and `.d.cts` declarations.\n- Per-transform state: parallel entries and multi-environment builds cannot leak dependency state.\n- CI covers Linux, Windows, minimum/latest Node, Rsbuild 1 compatibility, package export validation and the Rspress production build.\n\nInspired by [vite-plugin-glsl](https://github.com/UstymUkhman/vite-plugin-glsl).\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md","keywords":["rsbuild","rspack","glsl","wgsl","webgl","webgpu","shader","plugin"]}