美文网首页
webpack相关配置

webpack相关配置

作者: Young_Jeff | 来源:发表于2020-04-09 15:41 被阅读0次

process.env

process是什么?

官方:http://nodejs.cn/api/process.html
process 对象是一个全局变量,它提供有关当前 Node.js 进程的信息并对其进行控制。 作为一个全局变量,它始终可供 Node.js 应用程序使用,无需使用 require()。

env又是什么?

process.env 属性返回包含用户环境的对象
详见官网:http://nodejs.cn/api/process.html#process_process_env
示例如下:

{
  TERM: 'xterm-256color',
  SHELL: '/usr/local/bin/bash',
  USER: 'maciej',
  PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin',
  PWD: '/Users/maciej',
  EDITOR: 'vim',
  SHLVL: '1',
  HOME: '/Users/maciej',
  LOGNAME: 'maciej',
  _: '/usr/local/bin/node'
}

实际开发中,我们需要根据不同环境(开发、测试、生产),处理不同的逻辑(切换域名,获取不同变量等);
webpack官方配置就是根据process.env区分;
process.env就是Nodejs提供的一个API,它返回一个包含用户环境信息的对象。如果我们给Nodejs 设置一个环境变量,并把它挂载在 process.env 返回的对象上,便可以在代码中进行相应的环境判断

如何使用?

新建一个环境变量NODE_ENV,一般生产为pro,开发为dev,测试为stg;
在脚本中读取process.env.NODE_ENV即可。
NODE_ENV 这个名称只是大家约定俗成的,是可以修改的(比如react项目中:REACT_APP_NODE_ENV)

首先,在webpack项目里,修改package.json;

    • Windows 系统
{
  "private": true,
  "scripts": {
    "dev": "set NODE_ENV=development &&  webpack-dev-server --open --hot",
    "build": "set NODE_ENV=production &&   --progress --hide-modules"
  }
}
    • Mac 系统
{
  "private": true,
  "scripts": {
    "dev": "export NODE_ENV=development &&  webpack-dev-server --open --hot",
    "build": "export NODE_ENV=production &&   --progress --hide-modules"
  }
}

由于mac和window系统的语法不同,跨平台设置环境变量的第三方包cross-env应运而生;它可以让你只配置一行命令,就能轻松地在多个平台设置环境变量

npm install --save-dev cross-env 
    • cross-env 兼顾mac和window 配置语法
{
  "private": true,
  "scripts": {
    "start": "cross-env NODE_ENV=dev umi dev",
    "start_test": "cross-env NODE_ENV=test umi dev",
    "start_prod": "cross-env NODE_ENV=prod umi dev",
    "build": "cross-env NODE_ENV=prod umi build",
    "build_dev": "cross-env NODE_ENV=dev umi build",
    "build_test": "cross-env NODE_ENV=test umi build",
  },
}

相关文章

网友评论

      本文标题:webpack相关配置

      本文链接:https://www.haomeiwen.com/subject/kcjcmhtx.html