Webpack:独立的生产和开发构建
Webpack: Separate production and dev builds
最近开始评估webpack。之前使用过 g运行t 我已经习惯了这样一个事实,即我可以使用各种参数启动 g运行t 来配置构建期间将要发生的事情。例如:
grunt watch
将运行调试构建并启用监视任务。同时:
grunt build
将触发完全最小化的生产构建,禁用所有开发特定功能。
我想知道 webpack 是否有类似的功能,可以让我轻松地在不同配置之间切换。我已经做了一些研究,但我不喜欢目前所见的方法:
- 我看到了在调用
webpack
之前指定 NODE_ENV=production
的建议,但这与平台无关(例如,不适用于 windows)。
- 使用
-p
开关,但这似乎只影响最小化
- 为 webpack 使用单独的配置文件,但我更喜欢不需要维护两个单独文件的解决方案。
我明白 webpack 实际上并不是一个任务 运行ner 比如 g运行t 或者gulp,而是一个 模块打包器 。但它被提升为 g运行t 或 gulp see this Medium.com Blog.[=19 的替代品=]
我真正希望看到的是能够使用类似 webpack watch
的开发构建和使用 webpack
或 webpack 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 本身提供的参数。
最近开始评估webpack。之前使用过 g运行t 我已经习惯了这样一个事实,即我可以使用各种参数启动 g运行t 来配置构建期间将要发生的事情。例如:
grunt watch
将运行调试构建并启用监视任务。同时:
grunt build
将触发完全最小化的生产构建,禁用所有开发特定功能。
我想知道 webpack 是否有类似的功能,可以让我轻松地在不同配置之间切换。我已经做了一些研究,但我不喜欢目前所见的方法:
- 我看到了在调用
webpack
之前指定NODE_ENV=production
的建议,但这与平台无关(例如,不适用于 windows)。 - 使用
-p
开关,但这似乎只影响最小化 - 为 webpack 使用单独的配置文件,但我更喜欢不需要维护两个单独文件的解决方案。
我明白 webpack 实际上并不是一个任务 运行ner 比如 g运行t 或者gulp,而是一个 模块打包器 。但它被提升为 g运行t 或 gulp see this Medium.com Blog.[=19 的替代品=]
我真正希望看到的是能够使用类似 webpack watch
的开发构建和使用 webpack
或 webpack 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 本身提供的参数。