Javascript 如何获取由标志设置的网页模式值?

Javascript 如何获取由标志设置的网页模式值?,javascript,webpack,Javascript,Webpack,我正在使用图像网页加载程序优化图像。当我的网页模式为“开发”时,我想通过options.disable=true禁用它。现在我试图从process.env.NODE\u env获取模式,但它不起作用 以下是我的网页包配置的一部分: const config = { entry: './src/entry.js', output: { filename: 'script.js', }, module: { rules: [ { test:

我正在使用
图像网页加载程序
优化图像。当我的网页模式为“开发”时,我想通过
options.disable=true
禁用它。现在我试图从
process.env.NODE\u env
获取模式,但它不起作用

以下是我的网页包配置的一部分:

const config = {
  entry: './src/entry.js',
  output: {
    filename: 'script.js',
  },
  module: {
    rules: [
      {
        test: /\.(png|svg|jpg|jpeg|webp)$/,
        use: [
          {
            loader: 'file-loader',
            options: {
              name: '[name].[ext]',
              outputPath: 'images/',
            },
          },
          {
            loader: 'image-webpack-loader',
            options: {
              disable: process.env.NODE_ENV === 'development',
            }
          },
        ],
      },
    ],
  },
}


module.exports = (env, argv) => {
  if (argv.mode === 'development') {
    config.devtool = 'source-map';
    config.mode = 'development';
  } else {
    config.mode = 'production';
  }

  return config;
};


我通过
webpack--mode=production
webpack--mode=development

运行我的conifg,这将不起作用,因为在构建期间,webpack仅设置
节点_ENV
。如果希望在加载配置时设置此选项,则需要在命令行中启动构建时进行设置。但是,最好的选择是将配置转换为函数

const config = mode => ({
  entry: './src/entry.js',
  output: {
    filename: 'script.js',
  },
  module: {
    rules: [
      {
        test: /\.(png|svg|jpg|jpeg|webp)$/,
        use: [
          {
            loader: 'file-loader',
            options: {
              name: '[name].[ext]',
              outputPath: 'images/',
            },
          },
          {
            loader: 'image-webpack-loader',
            options: {
              disable: mode === 'development',
            }
          },
        ],
      },
    ],
  },
  devtool: mode === 'development' ? 'source-map' : undefined,
  mode
})


module.exports = (env, argv) => config(argv.mode)