javascript - 与 webpack/browserify 捆绑时如何排除代码路径?

我有一个可以与 node.js 和浏览器一起使用的库。我正在使用 CommonJS,然后使用 webpack 发布 Web 版本。我的代码如下所示:

// For browsers use XHR adapter
if (typeof window !== 'undefined') {
  // This adapter uses browser's XMLHttpRequest
  require('./adapters/xhr');
}
// For node use HTTP adapter
else if (typeof process !== 'undefined') {
  // This adapter uses node's `http`
  require('./adapters/http');
}

我遇到的问题是,当我运行 webpack(browserify 也会这样做)时,生成的输出包括 http 及其所有依赖项。这会产生一个对于浏览器性能而言并非最佳的巨大文件。

我的问题是如何在运行模块 bundler 时排除 Node 代码路径?我通过使用 webpack 的外部组件暂时解决了这个问题,并在包含 './adapters/http' 时返回 undefined。这并不能解决其他开发人员使用 CommonJS 依赖我的库的用例。除非他们使用类似的排除配置,否则他们的构建最终会遇到同样的问题。

我看过使用 envify,只是想知道是否有其他/更好的解决方案。

谢谢!

最佳答案

您可以将 IgnorePlugin 用于 Webpack。如果您使用的是 webpack.config.js 文件,请像这样使用它:

var webpack = require('webpack')

var ignore = new webpack.IgnorePlugin(/^(canvas|mongoose|react)$/)

module.exports = {
  //other options goes here
  plugins: [ignore]
}

为了进一步插入它,您可以使用诸如 process.env.NODE_ENV 之类的标志来控制 IgnorePlugin 的正则表达式过滤器

https://stackoverflow.com/questions/25834396/

相关文章:

c++ - 如何使用 MinGW 构建 Boost 1.55?

plugins - 如何将作业放入 Jenkins 的 Throttle Concurrent Bu

xcode - "Run Script"在构建阶段需要什么权限?

java - Maven 构建编译错误 : Failed to execute goal org.

java - ANT_HOME 设置不正确或 ant 无法定位

eclipse - 如何使用 Eclipse CDT 构建 SCons 项目?

git - 如何动态选择要在 Jenkins 构建中使用的 git 分支

android - 切片签名与android studio默认运行不一致

visual-studio-2010 - 错误 MSB6006 : "cmd.exe" exited

testing - Maven:在生命周期中跳过测试编译?