Rollup 是一个 JavaScript 模块打包器,主要用于将多个模块打包成一个或多个捆绑文件。它特别适用于库和应用程序的开发,因为它可以生成高度优化的代码,减少最终包的大小。Rollup 支持 ES 模块(ESM)和 CommonJS(CJS)格式的输出。
require
和 module.exports
语法。原因:可能是由于 Rollup 配置不正确,导致生成的代码不符合目标环境的要求。
解决方法:
output.format
和 output.target
选项。@rollup/plugin-babel
用于 Babel 转换。// rollup.config.js
import babel from '@rollup/plugin-babel';
import resolve from '@rollup/plugin-node-resolve';
export default {
input: 'src/index.js',
output: {
file: 'dist/bundle.esm.js',
format: 'esm',
target: 'es2015'
},
plugins: [
resolve(),
babel({
babelHelpers: 'bundled',
exclude: 'node_modules/**'
})
]
};
原因:CommonJS 模块主要用于 Node.js 环境,浏览器不支持 require
语法。
解决方法:
@rollup/plugin-commonjs
插件将 CommonJS 模块转换为 ES 模块。// rollup.config.js
import commonjs from '@rollup/plugin-commonjs';
import resolve from '@rollup/plugin-node-resolve';
export default {
input: 'src/index.js',
output: {
file: 'dist/bundle.esm.js',
format: 'esm'
},
plugins: [
resolve(),
commonjs()
]
};
通过以上配置和插件,你可以灵活地定制 Rollup 生成的 ES 或 CommonJS 依赖关系,满足不同应用场景的需求。
领取专属 10元无门槛券
手把手带您无忧上云