我试图让browserify的自定义依赖项名称与内存流一起使用.我使用内存流的原因是因为此代码注定要在AWS Lambda中运行,该Lamb Lambda将接收多个"文件"作为输入,并且不会通过文件系统对lambda可用.
根据https://github.com/substack/node-browserify上的文档,似乎这应该是可能的:
b.require(文件,选择)
file也可以是一个流,但你也应该使用opts.basedir,以便相对要求可以解析.
使用opts的expose属性指定自定义依赖项名称.require('./ vendor/angular/angular.js',{expose:'angular'})启用require('angular')
码:
const browserify = require('browserify')
const path = require('path')
const File = require('vinyl')
const jsIndex = new File({
file: path.resolve('index.js'),
contents: new Buffer('var two = require("./two")')})
const jsTwo = new File({
file: path.resolve('two.js'),
contents: new Buffer('console.log("Hello from two.js")')})
browserify({
entries: [ jsIndex ],
require: [ jsTwo ],
basedir: path.resolve('.')
})
.bundle((err, res) => {
if (err) console.log(err.message)
})
.pipe(process.stdout)
Run Code Online (Sandbox Code Playgroud)
错误:
Cannot find module './two' from '...'
编辑:
另一个人在node-browserify github页面上发布了类似的问题:https …
我有一个nodejs项目,它使用存储在js文件中的大型字典列表(数百万条目),如下所示:
module.exports = ["entry1", "entry2", "entry3", "entry4", "entry5", etc.];
然后我从其他文件中使用它们,如下所示:
var values = require('./filePath');
这很好用,它也适用于浏览器(使用browserify),但捆绑需要很长时间 - 大约10分钟.
我使用以下命令来创建包:
browserify "./src/myModule.js" --standalone myModule -t [ babelify --presets [ es2015 stage-2 ] --plugins ["transform-es2015-classes", {"loose": true}]
我试图避免解析我的字典js文件使用,--noparse ["path1", "path2", "path3", etc.]但它没有任何区别.
理想情况下,我想加快browserify\babelify进程,但如果不可能,我会很高兴找到另一种方式(即避免require)来存储和使用我的列表,这样他们就不会减慢进程的速度但这在节点和浏览器中也起着至关重要的作用.