Javascript 使用Browserify和Gulp动态生成所需模块
有没有一种方法可以调用Browserify(通过Gulp)以便在Javascript 使用Browserify和Gulp动态生成所需模块,javascript,dynamic,gulp,require,browserify,Javascript,Dynamic,Gulp,Require,Browserify,有没有一种方法可以调用Browserify(通过Gulp)以便在需要使用给定名称创建模块时包含不同的文件 简单地说,我想要的最终结果是我的Browserify入口点,main.js: var myPlatformSpecificImplmentation = require('./platform'); // go to town 运行gulp js:platform-a时使用/path/to/platform-a.js的内容,运行gulp js:platform-b时使用/path/to/p
需要使用给定名称创建模块时包含不同的文件
简单地说,我想要的最终结果是我的Browserify入口点,main.js
:
var myPlatformSpecificImplmentation = require('./platform');
// go to town
运行gulp js:platform-a
时使用/path/to/platform-a.js
的内容,运行gulp js:platform-b
时使用/path/to/platform-b.js
的内容
如果我使用的是RequireJS,那么只需相应地修改路径
选项即可:
paths: {
platform: './path/to/platform-a'
}
如果我能通过gulp内置的流媒体机制动态生成这些模块,那就太好了。在这种情况下,我可以(比如)将一个文件导入gulptemplate
并继续导入Browserify
谢谢一个解决方案是像这样使用我的插件:
gulpfile.js
main.js
我已经用您的require()
字符串更改为app/platform
说明了这一点,因为这允许最简单的pathmodify实现,而不会与其他文件中的其他/platform
相对路径发生冲突。但这可以通过pathmodify实现,而不存在冲突的风险(通过测试父模块[main.js
在本例中为]路径名)。如果保留/platform
字符串对您很重要,我将对此进行说明
或者你可以使用一个变换。如果您不想使用自己的版本,请查看中的makeRequireTransform()
如果我能通过gulp内置的流媒体机制动态生成这些模块,那就太好了。在这种情况下,我可以,比方说,将一个文件导入gulp模板,然后导入Browserify
这不是不可能的,但这并不容易做到。要在不接触磁盘的情况下执行此操作,您需要创建/gulp.src()
一个乙烯基文件,并通过任何gulp插件运行它,然后将其转换为流以馈送到browserify
var
pathmod = require('pathmodify'),
paths = {a: '/path/to/platform-a.js', b: '/path/to/platform-b.js'};
function platform (version) {
return function () {
return browserify('./main')
.plugin(pathmod(), {mods: [
pathmod.mod.id('app/platform', paths[version])
]})
.bundle()
.pipe(...);
};
}
gulp.task('js:platform-a', platform('a'));
gulp.task('js:platform-b', platform('b'));
var myPlatformSpecificImplmentation = require('app/platform');