Vik*_*gde 6 javascript bundle rollup commonjs es6-modules
当我仅使用const Example1 = require('./example1.js)语句时,example1.js文件内的代码将包含在捆绑包中。如果我只使用import Example2 from './example2.js',那么 example2.js 中的代码也会包含在捆绑包中。但是,如果我同时使用这两种语句,则只有import有效和require无效。
我正在使用 rollup 进行捆绑。
我的汇总配置如下所示
import babel from 'rollup-plugin-babel'
import commonjs from 'rollup-plugin-commonjs'
import external from 'rollup-plugin-peer-deps-external'
import postcss from 'rollup-plugin-postcss'
import resolve from 'rollup-plugin-node-resolve'
import url from 'rollup-plugin-url'
import svg from 'rollup-plugin-svg'
import json from 'rollup-plugin-json';
import { terser } from 'rollup-plugin-terser'
export default {
input: 'src/sdk/test.js',
output: [
{
file: "src/sdk/sdk.js",
format: 'cjs'
},
{
file: "src/sdk/sdk.es.js",
format: 'es'
},
{
file: "src/sdk/sdk.iife.js",
format: 'iife'
}
],
plugins: [
resolve({
browser: true,
}),
commonjs(),
external(),
postcss({
modules: true
}),
url({
limit: 100 * 1024,
emitFiles: false
}),
svg(),
babel({
exclude: 'node_modules/**',
"plugins": ["@babel/plugin-proposal-class-properties"]
}),
terser(),
json()
]
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,rollup 支持“esm”模块作为条目。如果你想在项目中包含commonjs文件,你可以在plugins字段中包含'@rollup/plugin-commonjs',它通常可以工作。
也许以下配置会有所帮助,我尝试了非常简单的示例:
commonjs({transformMixedEsModules:true})
Run Code Online (Sandbox Code Playgroud)
transformMixedEsModules 指示插件是否启用混合模块转换。这在混合 ES 和 CommonJS 模块的场景中非常有用。如果已知 require 调用应该被转换,则设置为 true;如果代码包含 env 检测并且 require 应该在转换后继续存在,则设置为 false。
https://github.com/rollup/plugins/tree/master/packages/commonjs
| 归档时间: |
|
| 查看次数: |
8534 次 |
| 最近记录: |