我无法弄清楚browserifybasedir
选项的工作方式。
注意:我对整个basedir
概念的理解可能是错误的,因为我来自RequireJS(认为baseUrl
)。
编辑的确,我错了,但是您仍然可以实现我使用该paths
选项所做的尝试,请参见下面的答案。
我知道该basedir
选项使您能够(自由!.
)从静态根目录/基础目录中指定所有需要的路径(以开头)process.cwd()
。
这确实使我发疯,尽管我实现了这样的功能是非常基本的,并且很多人都会遇到与我相同的问题,但是实际上在网络上很少有关于如何正确设置功能的信息。basedir
选项..相信我,这不是直截了当的..
所以这是令我发疯的BASIC示例。
给定以下文件结构:
js/
js/app.js
js/src/models/Person.js
js/src/views/PersonView.js
并运行:
var browserify = require('browserify');
var gulp = require('gulp');
gulp.task('scripts', function() {
var b = browserify('./app', {basedir: './js'});
b.bundle().pipe(gulp.dest('./dist'));
});
我希望能够在中进行以下require()
调用PersonView.js
:
var Person = require('./src/models/Person');
...
而不是(显然是有效的...):
var Person = require('../models/Person');
...
但是我收到以下错误:
Error: module "./src/models/Person" not found from "/Users/...some path.../js/src/views/PersonView.js"
我对该basedir
选项缺少什么?
事实证明,basedir
这与RequireJS的不同baseUrl
。如@Ben在上述评论中所述,官方文档说:
opts.basedir
是browserify开始捆绑的目录,用于以开头的文件名.
。
含义basedir
仅适用于entry
文件。require
将始终相对于当前正在分析的文件来解析文件树结构深处的进一步调用。
的paths
的选项browser-resolve
(这是使用browserify
引擎盖下)就是我一直在寻找:
路径-如果在正常的node_modules递归遍历中找不到任何内容,则使用require.paths数组
只是通过这个选项与其他一起browserify
选择实例,所述捆绑时。
注意:当与transform一起使用时,看起来好像很混乱。browserify-shim
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句