当我仅使用const Example1 = require('./example1.js)
语句时, example1.js 文件中的代码将包含在捆绑软件中。如果我仅使用import Example2 from './example2.js'
,那么example2.js中的代码也将包含在捆绑软件中。但是,如果我同时使用这两个语句,则仅import
有效而require
不起作用。
我正在使用汇总进行捆绑。
我的汇总配置看起来像这样
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()
]
}
答案 0 :(得分:0)
默认情况下,汇总支持将'esm'模块作为条目。如果您希望在项目中包含commonjs文件,则可以在插件字段中包含“ @ rollup / plugin-commonjs”,通常可以使用。
也许以下配置会有所帮助,我尝试了一个非常简单的示例:
commonjs({transformMixedEsModules:true})
transformMixedEsModules 指示插件是否启用混合模块转换。这在混合ES和CommonJS模块的场景中很有用。如果已知需要转换请求,则将其设置为true;如果代码包含env检测并且需求应在转换后仍然存在,则将其设置为false。
https://github.com/rollup/plugins/tree/master/packages/commonjs