使用Browserify API,在本地文件上使用require和exclude

With the Browserify API, use require and exclude on a local file

本文关键字:require exclude 文件 API Browserify 使用      更新时间:2023-09-26

使用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不工作。我得到错误Error: Cannot find module '/test.js' .

我怎么让它工作?

由于某些原因,bundle.jslib.js之间的键不同。在lib.js中,test.js的键是完整路径(/Users/gary/Projects/browserify-test/test.js),而在bundle.js中,它正在寻找键为./test.js的模块。如果我手动将后者更改为与前者相同,则它可以工作。

我猜,最终,Browserify不支持require对本地文件排除在同一包

browserify需要一个绝对路径来检索文件,并将其作为bundle键。修复它的方法是使用expose选项…

In your build.

var dependencies = [
  'lodash',
  {file: './test.js', expose: 'test'},
];

和在app.js…

var _ = require('lodash');
var test = require('test');