从webpack bundle中排除模块

Sim*_*enB 13 javascript webpack

我想要像RequireJS http://requirejs.org/docs/optimization.html#empty这样的功能empty:

我的用例是我包含jquery-migrate在开发中,但我想在生产时将其排除在外.

使用IgnorePlugin只是使它不包括在内,当require它在代码中,它然后抛出一个错误(Uncaught Error: Cannot find module "jquery-migrate").

我想要发生的是它只返回undefined或类似的东西(比如empty:RequireJS).我想不要触摸代码中的导入,只是将其配置为返回undefined.

编辑:使用NormalModuleReplacementPlugin作品,如果我将替换指向空文件.但是为此保留一个空文件似乎是不必要的.

igl*_*igl 18

我使用null-loader来消隐模块.noop-loader可以用于配置中不那么笨拙的if-else.

尝试:

rules: [{
    test: /jquery-migrate/,
    use: IS_DEV ? 'null-loader' : 'noop-loader'
}]
Run Code Online (Sandbox Code Playgroud)

  • 请注意其他新手,这些加载器不包含在webpack中:`npm install --save-dev null-loader && npm install --save-dev noop-loader` (3认同)

小智 5

您可以尝试在webpack.config中创建resolve.alias:

resolve: {
    alias: {
         "jquery-migrate": process.env.NODE_ENV === 'production' ? "empty-module": "jquery-migrate"
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @Simen`npm i -D empty-module` (5认同)