【发布时间】:2016-04-25 13:11:18
【问题描述】:
如何确定webpack.config.js 是通过webpack 还是webpack-dev-server 加载的?
【问题讨论】:
标签: webpack webpack-dev-server
如何确定webpack.config.js 是通过webpack 还是webpack-dev-server 加载的?
【问题讨论】:
标签: webpack webpack-dev-server
webpack 开发服务器will now 设置了WEBPACK_DEV_SERVER 环境变量,允许更健壮的检查方式。
const isDevServer = process.env.WEBPACK_DEV_SERVER;
【讨论】:
要么:
const isDevServer = process.argv[1].indexOf('webpack-dev-server') !== -1;
或:
const isDevServer = process.argv.some(v => v.indexOf('webpack-dev-server') !== -1);
或:
const isDevServer = process.argv.some(v => v.includes('webpack-dev-server'));
我一直在使用后者,效果很好。一种配置 FTW!
【讨论】:
const isDevServer = process.argv.find(v => v.includes('webpack-dev-server'))
isDevServer 设置为包含'webpack-dev-server' 的argv 元素的值。将 some 替换为 find 以确保 isDevServer 是布尔值。
some 会更好。我已经编辑了我的答案,谢谢你:)
我找到了一种潜在的解决方案:
var isDevServer = path.basename(require.main.filename) === 'webpack-dev-server.js';
【讨论】:
path.relative('', require.main.filename) == 'node_modules/webpack-dev-server/bin/webpack-dev-server.js'.
或使用Webpack Environment Variables:
// The webpack command line
webpack-dev-server --open --env.devServer
// webpack.config.js
module.exports = env => {
console.log('isDevServer: ', env.devServer) // true
...
}
【讨论】: