【问题标题】:How to ignore libraries in browserify programmatic api如何忽略browserify编程api中的库
【发布时间】:2013-08-12 17:12:12
【问题描述】:

假设在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']
});

执行此捆绑程序会生成一个包含原始backbone 源的流。基于 browserify 的command line options,我希望它完全跳过主干。阅读源代码,我预计以下可能会起作用:

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

虽然backbone source 仍然出现在流输出中。

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

【问题讨论】:

  • 您找到解决方案了吗?

标签: node.js backbone.js browserify


【解决方案1】:

如您所见,from here 命令行中提供的--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();

【讨论】:

  • 感谢您对来源的引用。我实现了一个类似的块,但是在所有大文件(jQuery、Backbone、Lodash)上使用和不使用 noParse 的解析时间是相同的:~15 秒。对我来说,这表明文件确实仍在被解析
  • 我无法验证 noParse 是否真的有效。我最终在node_modules/browserify/index.js'globalTr 函数中添加了console.log(file);,就在var parts = file.split('/node_modules/'); 行之前。它帮助我意识到我为要忽略的文件使用了错误的路径。我希望 browserify 有一个更详细的 --verbose 模式。
【解决方案2】:
var browserify = require("browserify")

browserify({entries: ['./src/client/app.js']})
.ignore('jquery')

这样会让browserify忽略jquery,然后jquery可以直接加到index.html上。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多