有点混淆这些概念:--env / cross-env / process.env.NODE_ENV / DefinePlugin

查了些资料,没有完整说明的,有懂的大神看看下面的理解对不?

--env

"start": "webpack --env IS_ES serve --config webpack.conf.js --open Chrome.exe"

这个东西属于webpack的一个配置项
只能在webpack.config.js中使用,不能src代码中使用
例如:

const path = require('path');

module.exports = env => {
  // Use env.<YOUR VARIABLE> here:
  console.log('NODE_ENV: ', env.NODE_ENV); // 'local'
  console.log('Production: ', env.production); // true

  return {
    entry: './src/index.js',
    output: {
      filename: 'bundle.js',
      path: path.resolve(__dirname, 'dist'),
    },
  };
};

DefinePlugin

定义一个node变量,可以在任何地方使用,通过process.env.xx调用即可
定义一个全部变量,只能在src代码中使用

new webpack.DefinePlugin({
  PRODUCTION: JSON.stringify(true),
  VERSION: JSON.stringify('5fa3b9'),
  BROWSER_SUPPORTS_HTML5: true,
  TWO: '1+1',
  'typeof window': JSON.stringify('object'),
  'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
})
console.log(VERSION)

cross-env

设置node变量,只能在node环境使用,src不行
因node在不同系统上设置环境变量process.env的方式不同,
所以产生这个插件

process.env.NODE_ENV

webpack内部同时设置的node变量全局变量
所以可以同时在配置文件和src代码中使用

阅读 999
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题