如何导出浏览过的模块以便在浏览器中进行浏览?
我有几个js模块,我将它们与browserify捆绑在一起:
gulp.task('build:js', ['clean:js'], function () {
browserify({
debug: true,
entries: paths.js.src
})
.transform('babelify', { presets: ['es2015'] })
.bundle()
.pipe(source('bundle.js'))
.pipe(buffer())
.pipe(gulp.dest(paths.js.dist));
});
它输出一个bundle.js
。 但是,像这样捆绑时,我require
浏览器中的单个模块。 我希望这样做,因为我不希望始终启动每个模块(有些是页面特定的)。 而不是我希望能够使用var someModule = require('some-module');
在捆绑的页面上。
现在我无法在文档中找到任何关于此的信息,因为它只记录命令行选项(而不是js api)。 这个答案显示了一个模块可以被需要并从gulp暴露出来,但是这会暴露我的整个bundle,而不是它所组成的模块。
解决方案是将所有模块分开捆绑,排除依赖关系(因此它们不会在捆绑包中重复),然后将它们连接起来。 但是这并不是一个可行的解决方案,因为:
那么我该如何解决这个问题? 我如何要求我的js在浏览器中单独编写的包,供客户端使用?
所以我最终做的是别的。 尽管有可能,但我所要求的方式与浏览工作的方式背道而驰。 也许最终当HTTP2导入和js模块可以在所有主流浏览器中使用时,这会更容易。
现在,我只需为每个页面上运行的脚本提供一个global
包,包括我的所有第三方库。 然后,对于每个页面,我都有一个单独的入口点以及它需要的本地模块。 这是迄今为止最可维护的解决方案。
上一篇: How do I export my browserified modules for requiring in the browser?
下一篇: How to use my own version of jQuery with browserified modules