Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Browserify和Gulp动态生成所需模块_Javascript_Dynamic_Gulp_Require_Browserify - Fatal编程技术网

Javascript 使用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(通过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/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');