【发布时间】:2017-09-14 13:05:23
【问题描述】:
我正在关注this 示例和许多其他类似示例,以将供应商捆绑包与主 JS 文件分开。我有一个多入口点应用程序。所以我将有 N 个 HTML 文件,如下所示
[articles.html]
<script type="text/javascript" src="vendor.js" charset="utf-8"></script>
<script type="text/javascript" src="articles.js" charset="utf-8"></script>
[categories.html]
<script type="text/javascript" src="vendor.js" charset="utf-8"></script>
<script type="text/javascript" src="categories.js" charset="utf-8"></script>
等等。 我也有自己的模块。我希望我自己的模块代码不要重复到articles.js、categories.js 等中。而是捆绑或与供应商捆绑或在单独的捆绑中。例如
[articles.html]
<script type="text/javascript" src="vendor.js" charset="utf-8"></script>
<script type="text/javascript" src="mySharedModules.js" charset="utf-8"></script>
<script type="text/javascript" src="articles.js" charset="utf-8"></script>
所以,按照 the commonly accepted method to build vendor bundle 的样子,我将 gulpfile 修补为类似
const mymod = ['./src/js/mod1.js', './src/js/mod2.js'];
gulp.task('build:mymod', function() {
const b = browserify();
mymod .forEach(function(lib) {
b.require(lib);
});
b.bundle()
.pipe(source('mySharedModules.js'))
.pipe(buffer())
.pipe(gulp.dest('./dist/'));
});
它的构建没有错误,但我必须指定的源路径(我不知道其他方式来引用我自己的模块,因为它不是 NPM 模块......)是硬编码的:
...
},{"../mod1.js":"/src/js/mod1.js","jquery":"jquery"}],2:
[function(require,module,exports){
var l = require("../mod1.js");
...
当然,路径“/src/js/mod1.js”在“dist”目录中没有意义。事实上我得到一个错误:找不到模块“/src/js/mod1.js”。
捆绑我自己的共享 JS 模块的正确方法是与供应商的模块捆绑还是单独捆绑?
谢谢
【问题讨论】:
标签: javascript node.js gulp browserify