我正在试用rollupjs将节点应用打包成bundle.js
并感到困惑。
汇总是否支持捆绑整个节点应用程序(包括
node_modules
),或仅包含属于项目的js文件?
我有一个标准的节点项目(1 index.js
,node_modules
中有数千个文件)并且只想要一个bundle.js
。我试过了:
rollup.config.js :
import commonjs from 'rollup-plugin-commonjs';
import nodeResolve from 'rollup-plugin-node-resolve';
export default {
entry: 'index.js',
dest: 'bundle.js',
format: 'iife',
plugins: [
commonjs({
// non-CommonJS modules will be ignored, but you can also
// specifically include/exclude files
include: 'node_modules/**', // Default: undefined
// if true then uses of `global` won't be dealt with by this plugin
ignoreGlobal: false, // Default: false
// if false then skip sourceMap generation for CommonJS modules
sourceMap: false, // Default: true
}),
nodeResolve({
jsnext: true,
main: false
})
]
};
无论我尝试rollup
,我都会转变index.js
:
module.exports = require('dat-node') // 88 MB node_modules
使用此命令:
rollup index.js --format iife --output dist/bundle.js -c
到此bundle.js
而不添加node_modules
:
(function () {
'use strict';
module.exports = require('dat-node');
}());
我试过了:
现在我在想,也许我理解汇总错误,它不支持我想要的东西。非常感谢!
答案 0 :(得分:4)
试试这个:
import commonjs from "rollup-plugin-commonjs";
import nodeResolve from "rollup-plugin-node-resolve";
export default {
entry : "index.js",
dest : "bundle.js",
moduleName : "myModule",
format : "iife",
plugins : [
commonjs({
// non-CommonJS modules will be ignored, but you can also
// specifically include/exclude files
include: [ "./index.js", "node_modules/**" ], // Default: undefined
// if true then uses of `global` won't be dealt with by this plugin
ignoreGlobal: false, // Default: false
// if false then skip sourceMap generation for CommonJS modules
sourceMap: false // Default: true
}),
nodeResolve({
jsnext: true,
main: false
})
]
};
主要变化是您需要在index.js
调用中包含commonjs
,否则它将无法转换为ES6模块(这是nodeResolve
需要的)
您还需要设置moduleName
。
NB :我没有专门针对dat-node
进行测试,而是使用lodash
进行测试。