Webpack:独立的生产和开发构建

Webpack: Separate production and dev builds

最近开始评估webpack。之前使用过 g运行t 我已经习惯了这样一个事实,即我可以使用各种参数启动 g运行t 来配置构建期间将要发生的事情。例如:

grunt watch

将运行调试构建并启用监视任务。同时:

grunt build

将触发完全最小化的生产构建,禁用所有开发特定功能。

我想知道 webpack 是否有类似的功能,可以让我轻松地在不同配置之间切换。我已经做了一些研究,但我不喜欢目前所见的方法:

我明白 webpack 实际上并不是一个任务 运行ner 比如 g运行t 或者gulp,而是一个 模块打包器 。但它被提升为 g运行tgulp see this Medium.com Blog.[=19 的替代品=]

我真正希望看到的是能够使用类似 webpack watch 的开发构建和使用 webpackwebpack build 的生产构建是可能的 webpack

首先,如果你使用 webpack-dev-server 就很容易理解你处于开发模式:

let isDevMode = process.argv[1].endsWith('webpack-dev-server') || process.argv[1].endsWith('webpack-dev-server.js');

第一个条件是 Linux / mac,第二个条件是 Windows.

然后使用它来配置您的文件。

如果你不使用开发服务器,你可以在 运行 webpack 时传递任何参数,就像你对任何 nodejs 脚本所做的那样(我使用 minimist 来读取参数,但它只是一个糖,不需要就不用):

let argv = require('minimist')(process.argv.slice(2));

let isDevMode = argv.dev; // or watch or whatever you want to pass

然后这样称呼它:

webpack --dev

这实际上是一种做很多事情的非常灵活的方式,而不仅仅是指定开发模式。我还使用它来指定包名称等。您唯一需要关心的是避免使用 webpack 本身提供的参数。