我正在尝试使用Rollup构建我的项目。我得到了大部分工作(包括Angular 2),但是我无法改变我的一些polyfill,因为他们在其中调用了require()
。即使使用rollup-plugin-node-resolve
和rollup-plugin-commonjs
,它也根本无法触及require
。
那么我怎样才能改变它们呢?我可以使用的解决方法是浏览化polyfill,然后在汇总过程中包含浏览器化的包,但这需要大量额外的插件,并不是一个干净的解决方案,特别是因为我认为Rollup应该能够了解CommonJS。
以下是Node.js的一些测试代码:
"use strict";
let rollup = require("rollup");
let fs = require("fs");
let resolve = require("rollup-plugin-node-resolve");
let commonjs = require("rollup-plugin-commonjs");
rollup.rollup({
entry: "src/main.js",
plugins: [
resolve({
jsnext: true,
main: true
}),
commonjs({
include: '**', // also tried src/** node_modules/** and a lot of other stuff.
// Leaving this undefined stops rollup from working
}),
]
}).then(function(bundle) {
bundle.write({
format: "iife",
dest: "www/bundle.js"
})
});
然后使用仅包含行src/main.js
的{{1}}的简单文件和包含任何内容的require("./some-file.js");
来证明问题。
答案 0 :(得分:2)
我在rollup-gitter的好人的帮助下解决了这个问题。
我需要在moduleName
选项中添加bundle.write
,如下所示:
bundle.write({
format: "iife",
dest: "www/bundle.js"
moduleName: "someModule"
})