为什么需要browserify`path`定义?

链接https://github.com/jhades/angularjs-gulp-example/blob/master/gulpfile.js有使用browserify paths的gulp build-js任务定义。 我不明白它的需要…是不是可能只是将条目指定为entries: './js/**/*.js',这将导致它search所有子entries: './js/**/*.js',目录以及…而不是明确指定paths: ['./js/controllers', './js/services', './js/directives'],这是所有同一父目录的子目录?

任何提示赞赏。

作者正在使用pathsconfiguration来启用非相对的require调用,如下所示:

 require('todoCtrl'); require('todoStorage'); require('todoFocus'); require('todoEscape'); require('footer'); 

Browserify模拟了Node的模块parsing机制( 这里解释了这个机制),当Nodeparsing一个非相对require ,它会在node_modulesnode_modulespaths选项为Browserify提供了一个不在node_modules中的path列表,它在尝试parsingnon-relative require调用时应检查( 检查node_modules 之前 )。

如果您在自己的项目中对所有require的模块调用都使用相对path(例如require('./js/controllers/todoCtrl') ),则不需要pathsconfiguration选项。

那么,一个简单的答案似乎是**/*不能被browserify识别! 你必须require("glob")这样做,但是使用paths来指定额外的文件夹可能更简单。