Skip to content

rollup-plugin-to-custom-chunk

插件功能

将匹配到的模块输出到指定的产物目录,解决小程序包大小超标的问题。例如:

  • 改变 uni-app 默认将 node_modules 下所有包都输出至 common/vendor.js 的行为。

使用

在你的 viterollup 配置文件中添加以下插件:

js
import { toCustomChunkPlugin } from '@minisheep/rollup-plugin-to-custom-chunk';
export default {
  plugins: [
    toCustomChunkPlugin({
        'common/my-vendor': [
          '@minisheep/three-platform-adapter',
          '@minisheep/three-platform-adapter/wechat',
        ],
        'sub-pack-2/vendor': [
          '@minisheep/three-platform-adapter/dist/three-override/jsm/**',
          'three',
          'three/examples/jsm/**',
        ]
    })
  ]
}

这会将适配器部分的代码输出到 distcommon 目录的 my-vendor.js 文件, 而 three 相关代码输出到 distsub-pack-2 目录 vendor.js 文件,以起到平衡包大小的效果。

配置

ts
export type ChunkName = string;
/** 可以是 resolveId 匹配或 glob 表达式, 表达式支持见 picomatch, glob 匹配的是模块文件路径*/
export type ChunkMatcher = string[];
export type ToCustomChunkOptions = Record<ChunkName, ChunkMatcher>;

export function toCustomChunkPlugin(options: ToCustomChunkOptions): Rollup.Plugin {}

调试

如果你不清楚你的配置哪里有问题,你可以在编译时设置环境变量 DEBUG=minisheep:to-custom-chunk 以检查配置生效情况。

例如:

shell
cross-env DEBUG=minisheep:to-custom-chunk npm run dev