Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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 Grunt Browserify-设置包括,回退路径_Javascript_Node.js_Gruntjs_Browserify_Commonjs - Fatal编程技术网

Javascript Grunt Browserify-设置包括,回退路径

Javascript Grunt Browserify-设置包括,回退路径,javascript,node.js,gruntjs,browserify,commonjs,Javascript,Node.js,Gruntjs,Browserify,Commonjs,是否有任何方法为Browserify创建Grunt任务以使用回退路径? 例如 require('./module.js) 检查当前目录中是否有module.js,如果没有,检查其他目录 project1 |- dir1 |- mod1.js - has: require('./mod2.js') |- bundle.js - has: require('./mod1.js') and require('./mod2.js') proj

是否有任何方法为Browserify创建Grunt任务以使用回退路径? 例如

require('./module.js)

检查当前目录中是否有
module.js
,如果没有,检查其他目录

    project1
     |- dir1
         |- mod1.js - has: require('./mod2.js')
         |- bundle.js - has: require('./mod1.js') and require('./mod2.js')
    project2
     |- dir2
         |- mod1.js 
         |- mod2.js
我已经尝试了,但它只能检查一个特定目录。 我不想改变模块内部的路径,一切都应该通过Grunt来完成

我想覆盖一些应用程序(dir2),所以我只想获取(复制到dir1)我需要更改的模块,并将所有其他模块保留在app目录中


GrunFile位于
project1
中。模块是通用的。我用的是

我知道这有点过时了,但如果有答案就好了

所以,几天前我问了自己一个非常类似的问题,结果基本上做了你想做的事情

使用grunt browserify的
browserify选项
,如:

// Using grunt-browserify
grunt.loadNpmTasks("grunt-browserify");

grunt.initConfig({
  browserify : {
    options : {
      browserifyOptions : {
        // keep in mind that paths are relative to Gruntfile.js
        paths: ["./first/path", "./second/path", "./and/so/on"]
      }
    },
    dist : {
      files: { "./path/to/dist.js" : "./path/to/src.js" }
    }
  },
});
现在,您将能够:

var myModule = require("myModule"); 
opts.paths是一个目录数组,当 正在查找未使用相对路径引用的模块。可以 是绝对的或相对于basedir的。等效于设置节点路径 调用browserify命令时的环境变量。-

从理论上讲,它应该按顺序遵循路径,我遇到的唯一问题是,它在搜索这些路径之前会先查看本机节点模块(util、fs等)

引用的意思是,如果你这样做:

var myModule = require("./myModule"); 
Browserify将按照相对路径查找模块。删除相对路径时:

var myModule = require("myModule");
它可以在选项中搜索已建立的路径

编辑 我对此进行了测试,结果与预期的一样。我在“/current/directory”中有一个名为myModule.js的模块,在“/modules/directory”中还有一个名为myModule.js的模块。另外,在当前目录中,我有需要模块的“src.js”:
require(“myModule”)。它在路径中按顺序查找,在本例中,首先找到的是注入到
bundle.js
中的路径

grunt.initConfig({
  browserify : {

    dist : {
      options : {
        browserifyOptions : {
          // keep in mind that paths are relative to Gruntfile.js
          paths: ["./current/directory", "./modules/directory"]
        }
      },
      files: { "./current/directory/bundle.js" : "./current/directory/src.js" }
    }
  },
});