我想使用factor-bundle来查找我的browserify入口点的公共依赖项,并将它们保存到一个公共捆绑包中:
https://www.npmjs.org/package/factor-bundle
因子包文档使得在命令行上看起来很容易,但是我想以编程方式进行操作,并且我很难理解它。
我当前的脚本是这样的(我正在使用reactify来转换react的jsx文件):
var browserify = require('browserify');
var factor = require('factor-bundle')
var glob = require('glob');
glob('static/js/'/**/*.{js,jsx}', function (err, files) {
var bundle = browserify({
debug: true
});
files.forEach(function(f) {
bundle.add('./' + f);
});
bundle.transform(require('reactify'));
// factor-bundle code goes here?
var dest = fs.createWriteStream('./static/js/build/common.js');
var stream = bundle.bundle().pipe(dest);
});
我正在尝试弄清楚如何使用factor-bundle作为插件,并为每个输入文件指定所需的输出文件(即files
中的每个条目)
答案 0 :(得分:7)
这个答案已经很晚了,所以你可能已经找到了解决方案或解决了这个问题。我正在回答这个问题,因为它与my question非常相似。
我能够通过使用factor-bundle作为browserify插件来实现这一点。我还没有测试过您的特定代码,但模式应该是相同的:
var fs = require('fs'),
browserify = require('browserify'),
factor = require('factor-bundle');
var bundle = browserify({
entries: ['x.js', 'y.js', 'z.js'],
debug: true
});
// Group common dependencies
// -o outputs the entry files without the common dependencies
bundle.plugin('factor-bundle', {
o: ['./static/js/build/x.js',
'./static/js/build/y.js',
'./static/js/build/z.js']
});
// Create Write Stream
var dest = fs.createWriteStream('./static/js/build/common.js');
// Bundle
var stream = bundle.bundle().pipe(dest);
factor-bundle插件采用输出选项o
,它需要与条目文件具有相同的索引。
不幸的是,在此之后我还没弄清楚如何对这些文件做任何其他事情,因为我似乎无法访问factor-bundle的流事件。因此,对于缩小等,可能还需要通过browserify插件来完成。
答案 1 :(得分:0)
我创建了grunt-reactify以允许您拥有JSX文件的包文件,以便更轻松地使用模块化的React组件。 您所要做的就是指定父目标文件夹和源文件:
grunt.initConfig({
reactify: {
'tmp': 'test/**/*.jsx'
},
})