如何捆绑commonjs模块,除非指定需要

How to bundle commonjs modules except specified requires

本文关键字:何捆绑 commonjs 模块      更新时间:2023-09-26

如何通过webpack或gulp+browserfy进行捆绑,除非指定需要,例如忽略var module = require(pathToModule);,这样得到的捆绑包也包含var module = require(pathToModule);

这可以通过webpack externals选项来完成

如果需要,也可以将externals选项用于应用程序以将现有的API导入到捆绑包中。也就是说,你想使用jquery来自CDN(单独的<script>标签),并且仍然想要require("jquery")在你的包裹里。只需将其指定为external: { externals: { jquery: "jQuery" } }即可。

webpack.config

{
    externals: {
        // require("jquery") is external and available
        //  on the global var jQuery
        "jquery": "jQuery"
    }
}

如果你想让webpack忽略外部模块并在输出中保留require语句,你可以使用一个空加载器

loaders: [{
    test: /@amperka'/.*/,
    loader: 'null'
}

使用Webpack中的externals设置来指定将在捆绑包之外加载所需的模块。

{
  ...
  externals: {
      // require("jquery") is external and available on the global var jQuery
      "jquery": "jQuery"
  }
  ...
}

因此,从捆绑包中调用require("jquery")将引用全局变量jQuery——这显然要求您在捆绑包之前加载jQuery,例如

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.js"></script>
<script src="bundle.js"></script>