使用Browserify API,在本地文件上使用require和exclude
With the Browserify API, use require and exclude on a local file
使用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.js
和lib.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');
相关文章:
- 当使用extern和目标JavaScript时,我如何强制Haxe编译器使用require语句
- 在gump和nodejs中使用Typescript时,未定义对require和exports的引用
- Typescript导入导出的类会发出require(..),从而导致浏览器错误
- 将require('..')与变量一起使用与在webpack中使用字符串相比
- 限制npm依赖模块's require(隔离)的用法
- 如何在不使用require语句的情况下使用webpack加载目录中的所有文件
- 无法加载Ace.js编辑器模式和主题(命名空间项目&AMD require.js&grunt
- 在javascript中的require中传递变量
- 避免重新评估和动态卸载用“require”调用的对象
- 弹出窗口-jQuery Mobile、Backbone.js和Require.js
- 在非SPA(单页应用程序)中使用Require.js和Backbone
- Angular2, doe's EventEmitter require zone.run?
- 在混合基本 URL 下动态加载 require.js 模块
- require('babel/register')不'不起作用
- Require in nodejs
- 使用Require.js按照依赖关系的顺序加载JavaScript
- ReferenceError:require未在javascript中定义
- 在nodejs中使用require来访问外部javascript文件
- 不能从 Backbone.View 的方法调用 Backbone.collection 的方法,其中包含 require
- 使用Browserify API,在本地文件上使用require和exclude