Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.7k views
in Technique[技术] by (71.8m points)

有点混淆这些概念:--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代码中使用


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神解答

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...