【问题标题】:How to detect if webpack-dev-server is running?如何检测 webpack-dev-server 是否正在运行?
【发布时间】:2016-04-25 13:11:18
【问题描述】:

如何确定webpack.config.js 是通过webpack 还是webpack-dev-server 加载的?

【问题讨论】:

    标签: webpack webpack-dev-server


    【解决方案1】:

    webpack 开发服务器will now 设置了WEBPACK_DEV_SERVER 环境变量,允许更健壮的检查方式。

    const isDevServer = process.env.WEBPACK_DEV_SERVER;
    

    【讨论】:

      【解决方案2】:

      要么:

      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 是布尔值。
      • @lawnsea 刚刚看到这个,你是对的,some 会更好。我已经编辑了我的答案,谢谢你:)
      【解决方案3】:

      我找到了一种潜在的解决方案:

      var isDevServer = path.basename(require.main.filename) === 'webpack-dev-server.js';
      

      credit

      【讨论】:

      • 我更喜欢这个答案。或者你可以这样做:path.relative('', require.main.filename) == 'node_modules/webpack-dev-server/bin/webpack-dev-server.js'.
      【解决方案4】:

      或使用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
        ...
      }
      

      【讨论】:

      • 你可以利用它,以便只在 webpack 开发服务器尚未启动时启动它吗?
      猜你喜欢
      • 2010-09-06
      • 2023-01-12
      • 2021-06-24
      • 2022-10-01
      • 2019-05-15
      • 2017-12-18
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      相关资源
      最近更新 更多