如何在browserify programmatic api中忽略库

kur*_*ing 21 node.js backbone.js browserify

假设找到以下代码bundler.js并跟踪entry.js导致var B = require('backbone');(Backbone是按声明的方式安装的依赖项package.json).

var browserify = require('browserify');
var bundle = new browserify();
bundle.add('entry.js');
bundle.bundle({
  noParse: ['backbone']
});
Run Code Online (Sandbox Code Playgroud)

执行此捆绑包会生成包含原始backbone源的流.基于browserify的命令行选项,我预计它会完全跳过主干.通过源阅读,我预计以下可能会有效:

var browserify = require('browserify');
var bundle = new browserify({
    noParse: ['backbone']
});
bundle.add('entry.js');
bundle.bundle();
Run Code Online (Sandbox Code Playgroud)

虽然backbone源仍然出现在流输出中.

是否可以--noparse=FILE在api的这个应用程序中用作配置选项?

Tho*_*enz 10

从这里可以看到,--noparse命令行上提供的选项将传递给browserify({ })调用.

因此,为了告诉browserify不解析jquery和three.js,你必须将完整路径传递给你的jquery和three.js文件.

例:

browserify({
  noParse: [
   require.resolve('./vendor/jquery'),
   require.resolve('./vendor/three')
  ]
})
.require(require.resolve('./entry.js'), { entry: true })
.bundle();
Run Code Online (Sandbox Code Playgroud)

  • 我很欣赏对来源的参考.我实现了一个类似的块,但在所有大文件(jQuery,Backbone,Lodash)上有和没有noParse的解析时间是相同的:〜15秒.对我来说,这表明文件确实仍然被解析 (8认同)
  • 我在验证noParse实际工作时遇到了麻烦.我最后在`var parts = file.split('/ node_modules /');`行之前添加了`console.log(file);``node_modules/browserify/index.js```globalTr`函数.它帮助我意识到我正在使用错误的路径来查找我想忽略的文件.我希望browserify有一个更详细的`--verbose`模式. (8认同)

iLe*_*ing 9

var browserify = require("browserify")

browserify({entries: ['./src/client/app.js']})
.ignore('jquery')
Run Code Online (Sandbox Code Playgroud)

这将使browserify忽略jquery,然后可以直接在index.html上添加jquery.