{"_id":"@boke-yigo/vite-plugin-chunk-split","name":"@boke-yigo/vite-plugin-chunk-split","dist-tags":{"latest":"0.5.0"},"versions":{"0.5.0":{"name":"@boke-yigo/vite-plugin-chunk-split","version":"0.5.0","description":"A vite plugin for better chunk split","author":{"name":"sanyuan0704"},"type":"module","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.cjs"}},"main":"./dist/index.cjs","types":"./dist/index.d.ts","repository":{"url":"git+ssh://git@github.com/sanyuan0704/vite-plugin-chunk-split.git"},"scripts":{"dev":"unbuild --stub","build":"unbuild","prepublishOnly":"npm run build","test":"vitest run"},"keywords":["vite","code-splitting"],"license":"MIT","devDependencies":{"@types/node":"^18.18.9","@types/resolve":"^1.20.5","rollup":"^4.4.0","typescript":"^5.2.2","unbuild":"^2.0.0","vite":"5.0.0-beta.18","vitest":"1.0.0-beta.4"},"bugs":{"url":"https://github.com/sanyuan0704/vite-plugin-chunk-split/issues"},"homepage":"https://github.com/sanyuan0704/vite-plugin-chunk-split#readme","dependencies":{"es-module-lexer":"^1.4.1","@dual-bundle/import-meta-resolve":"^4.0.0","magic-string":"^0.30.5"},"peerDependencies":{"vite":"^4 || ^5"},"_id":"@boke-yigo/vite-plugin-chunk-split@0.5.0","gitHead":"b75f3becb2115872a8df4f4749278cfa364b5720","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-uXGOe3ki4w4s8btzxGuWWDW9YNIwVlhOpjERMxu+rAza+jS+oJ6YOJuz3GcN6v4/RIJpmy1hk2GPlacIBk1RZQ==","shasum":"3e6b7007265118dfdede8c65c471e71bc66b63c0","tarball":"https://registry.npmjs.org/@boke-yigo/vite-plugin-chunk-split/-/vite-plugin-chunk-split-0.5.0.tgz","fileCount":8,"unpackedSize":19755,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1Z9rH9h8VMz2wEds2dLAXk6BZ/oG3AFSYzWSXpNfZbwIgQR5E4ih2WB3fA28Ae6lWg0Tvwl3YwAZjbDdZTAzMKU8="}]},"_npmUser":{"name":"zhufeng","email":"zhufeng0929@163.com"},"directories":{},"maintainers":[{"name":"zhufeng","email":"zhufeng0929@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vite-plugin-chunk-split_0.5.0_1721099650331_0.3328856046663313"},"_hasShrinkwrap":false}},"time":{"created":"2024-07-16T03:14:10.232Z","0.5.0":"2024-07-16T03:14:10.483Z","modified":"2024-07-16T03:14:10.769Z"},"maintainers":[{"name":"zhufeng","email":"zhufeng0929@163.com"}],"description":"A vite plugin for better chunk split","homepage":"https://github.com/sanyuan0704/vite-plugin-chunk-split#readme","keywords":["vite","code-splitting"],"repository":{"url":"git+ssh://git@github.com/sanyuan0704/vite-plugin-chunk-split.git"},"author":{"name":"sanyuan0704"},"bugs":{"url":"https://github.com/sanyuan0704/vite-plugin-chunk-split/issues"},"license":"MIT","readme":"# vite-plugin-chunk-split\n\nEnglish | [中文](./README-CN.md)\n\nA vite plugin for better chunk splitting.\n\n## Usage\n\n```js\n// use npm\nnpm i vite-plugin-chunk-split -D\n// use yarn\nyarn add vite-plugin-chunk-split -D\n// use pnpm\npnpm i vite-plugin-chunk-split -D\n```\n\nThen you can use it in vite.config.ts:\n```ts\n// vite.config.ts\nimport { chunkSplitPlugin } from 'vite-plugin-chunk-split';\n\n{\n  plugins: [\n    // ...\n    chunkSplitPlugin()\n  ]\n}\n```\n\n## Options\n```ts\ntype packageInfo = string | RegExp;\ntype Strategy =\n  // split by default\n  | 'default'\n  // all files will be together\n  | 'all-in-one'\n  // unbundle for your source files，vite will generate one chunk for every file\n  | 'unbundle';\n\nexport type CustomSplitting = Record<string, packageInfo[]>;\n\nexport interface ChunkSplitOptions {\n  strategy?: Strategy;\n  customSplitting?: CustomSplitting;\n}\n```\nYou can use the options to customize your splitting strategy, for example：\n```ts\n// vite.config.ts\nimport { chunkSplitPlugin } from 'vite-plugin-chunk-split';\n\n{\n  plugins: [\n    // ...\n    chunkSplitPlugin({\n      strategy: 'single-vendor',\n      customChunk: (args)=>{\n        // files into pages directory is export in single files\n        let { file, id, moduleId, root } = args;\n        if(file.startsWith('src/pages/')){\n          file = file.substring(4);\n          file = file.replace(/\\.[^.$]+$/, '');\n          return file;\n        }\n        return null;\n      }\n      customSplitting: {\n        // `react` and `react-dom` will be bundled together in the `react-vendor` chunk (with their dependencies, such as object-assign)\n        'react-vendor': ['react', 'react-dom'],\n        // Any file that includes `utils` in src dir will be bundled in the `utils` chunk\n        'utils': [/src\\/utils/]\n      }\n    })\n  ]\n}\n```\n\nBy the way, you can achieve bundleless by the `unbundle` strategy:\n```ts\n// vite.config.ts\nimport { chunkSplitPlugin } from 'vite-plugin-chunk-split';\n\n{\n  plugins: [\n    // ...\n    chunkSplitPlugin({\n      strategy: 'unbundle',\n      customSplitting: {\n        // All files in `src/container` will be merged together in `container` chunk\n        'container': [/src\\/container/]\n      }\n    })\n  ]\n}\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}