通过 Browserify API 和 Gulp,我得到了这个:
var browserify = require('browserify');
var gulp = require('gulp');
var source = require('vinyl-source-stream');
var dependencies = [
'lodash',
'./test.js',
];
gulp.task('lib', function() {
return browserify()
.require(dependencies)
.bundle()
.pipe(source('lib.js'))
.pipe(gulp.dest('./'));
});
gulp.task('app', function() {
return browserify('./app.js')
.external(dependencies)
.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest('./'));
});
在 app.js
中我有这个:
var _ = require('lodash');
var test = require('./test.js');
Lodash 行工作正常,但 ./test.js
不起作用。我收到错误错误:找不到模块“/test.js”
。
如何让它发挥作用?
由于某种原因,bundle.js
和 lib.js
之间的键有所不同。在 lib.js
中,test.js
的键是完整路径 (/Users/gary/Projects/browserify-test/test.js
),而在 bundle.js
中,它正在查找具有键 ./test.js
的模块。如果我手动将后者更改为与前者相同,那么它就可以工作。
我猜测,最终,Browserify 不支持对同一包中排除的本地文件进行 require
。
最佳答案
browserify 需要一个绝对路径来检索文件,并将其保留为捆绑 key 。修复它的方法是使用 expose
选项...
在你的构建中..
var dependencies = [
'lodash',
{file: './test.js', expose: 'test'},
];
在 app.js 中...
var _ = require('lodash');
var test = require('test');
关于javascript - 使用 Browserify API,在本地文件上使用 require 和排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39044991/