【发布时间】:2014-09-30 09:27:55
【问题描述】:
我有一个名为 constants 的模块。 Browserify 无法捆绑此模块,因为它的名称与 lib/builtins 中定义的内置模块冲突:
exports.constants = require.resolve('constants-browserify');
在生成的代码中可以观察到这种效果。例如,依赖于constants 的模块显示:
{
//...
12:[
function(require,module,exports){...},
{"util":6,"constants":2}
]
我们看到模块 12 依赖于模块 2(constants 的索引)。索引为 2 的模块的定义是:
2:[
function(require,module,exports){
module.exports={
"O_RDONLY": 0,
"O_WRONLY": 1,
"O_RDWR": 2
// ...
}
},
{}
]
那些O_* 常量是在constants-browserify 中定义的,而不是在我的constants 模块中。
我在 Gulp 中使用 NPM 包并指定以下 options:
return browserify('./main.js', {
basedir: './scripts/app/',
paths: ['./scripts/app/'],
builtins: []
})
.bundle()
.pipe(source('main.js'))
.pipe(gulp.dest('dist'));
我希望将builtins 指定为[](我也尝试过{})会覆盖此行为,但它似乎只在生成的代码中将模块解析为undefined:
12:[
function(require,module,exports){...},
{"util":6,"constants":undefined}
]
问题:
- 主要:有没有办法告诉 browserify 不要尝试替换我的模块?
- 为什么browserify要指定这些内置插件?我不明白他们是如何被需要的。
【问题讨论】:
标签: gulp browserify