我知道这已经有点老了,但最好有答案。
所以,几天前我问了自己一个非常相似的问题,最后基本上做了你想做的事。
使用来自 grunt-browserify 的browserifyOptions,例如:
// 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 是 browserify 搜索的目录数组
查找未使用相对路径引用的模块。能
绝对或相对于 basedir。等效于设置 NODE_PATH
调用 browserify 命令时的环境变量。 - Browserify
理论上,它应该按顺序遵循路径,我遇到的唯一问题是它在搜索这些路径之前会先查看本机节点模块(util、fs 等)。
这句话的意思是,如果你这样做:
var myModule = require("./myModule");
Browserify 将在相对路径之后查找模块。当您删除相对路径时:
var myModule = require("myModule");
它可以在选项中搜索已建立的路径。
编辑
我对此进行了测试,它按预期工作。我有一个名为 myModule.js 的模块,位于“./current/directory”中,我还有一个名为 myModule.js 的模块,位于“./modules/directory”中。另外,在当前目录中,我有需要模块的“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" }
}
},
});