umi 如何设置环境变量并使用

首先,安排上umi的官方文档:
https://v3.umijs.org/zh-CN/docs/config

接下来,实战演练,分别在根目录下创建 .umirc.ts 以及 .umirc.prod.ts文件(js文件同理)
为了兼容mac的环境变量,我们需要使用cross-env这个npm包进行环境变量设置

npm i cross-env -S

创建后的2个文件填充以下代码:

.umirc.ts (默认作为dev环境)

import { defineConfig } from 'umi';

// let target = 'http://11.2.33.222:8080';
let target = 'https://xxxx.xxxx.xxxx.cn';

export default defineConfig({
  nodeModulesTransform: {
    type: 'none',
  },
  routes: [
    { path: '/', component: '@/pages/index' },
    { path: '/AssetsTypeList', component: '@/pages/AssetsTypeList' },
  ],
  define: { // 重点就是这个属性了,设置全局变量
 	 // 在项目中,可以通过process.env.NODE_ENV 或者
 	 // process.env.UMI_ENV 或者process.env.date得到对应环境的值
    'process.env': {
      NODE_ENV: 'dev',
      UMI_ENV: 'dev',
      date: '2022-08-01',
    },
  },
  fastRefresh: {},
  // mfsu: {},
  alias: {
    '@': '/src',
  },
  hash: true,
  proxy: {
    '/govern': {
      target,
      changeOrigin: true,
    },
    '/label': {
      target,
      changeOrigin: true,
    },
  },
});

.umirc.prod.ts

import { defineConfig } from 'umi';

export default defineConfig({
  define: {
    'process.env': {
      NODE_ENV: 'prod',
      UMI_ENV: 'prod',
      date: '2022-08-22',
    },
  },
});

接着,我们需要改一下package.json的script中的启动和打包命令

package.json

{
  "private": true,
  "scripts": {
    "start": "umi dev", // 由于我们默认本地是dev 因此不用配置,
    // 如果想区分local和dev,则需要在根目录再创建一个.umirc.dev.ts文件
    "build": "cross-env UMI_ENV=prod umi build", // 重点在这里!!!添加cross-env UMI_ENV=prod
    "postinstall": "umi generate tmp",
    "prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'",
    "test": "umi-test",
    "test:coverage": "umi-test --coverage"
  },
  "gitHooks": {
    "pre-commit": "lint-staged"
  },
  "lint-staged": {
    "*.{js,jsx,less,md,json}": [
      "prettier --write"
    ],
    "*.ts?(x)": [
      "prettier --parser=typescript --write"
    ]
  },
  "dependencies": {
    "@ant-design/pro-layout": "^6.5.0",
    "@antv/g2plot": "^2.4.20",
    "@antv/g6": "^4.6.15",
    "antd": "^4.21.7",
    "cross-env": "^7.0.3",
    "echarts": "^5.3.3",
    "moment": "^2.29.4",
    "react": "17.x",
    "react-dom": "17.x",
    "umi": "^3.5.30"
  },
  "devDependencies": {
    "@types/react": "^17.0.0",
    "@types/react-dom": "^17.0.0",
    "@umijs/preset-react": "1.x",
    "@umijs/test": "^3.5.30",
    "lint-staged": "^10.0.7",
    "prettier": "^2.2.0",
    "typescript": "^4.1.2",
    "yorkie": "^2.0.0"
  }
}

然后在任意的组件中,打印使用全局变量

console.log('环境变量:', process.env, process.env.UMI_ENV);

dev:然后我们在本地构建完成,打开F12查看是否打印出全局变量(dev环境,可以理解就是本地环境local)

prod:生产环境则需要先打包部署,之后打开F12查看是否打印出全局变量

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
umi中,可以通过配置环境变量来控制应用程序在不同环境下的行为。以下是umi中配置环境变量的方法: 1. 在.umirc.js或config/config.js中使用define定义环境变量 可以在.umirc.js或config/config.js文件中定义环境变量,例如: ```js export default { define: { 'process.env.API_URL': 'http://localhost:3000' }, } ``` 在上述代码中,我们定义了一个名为`process.env.API_URL`的环境变量,值为`http://localhost:3000`。在应用程序中,可以通过`process.env.API_URL`来访问该环境变量。 2. 在package.json中定义环境变量 在package.json文件中可以使用cross-env库来定义环境变量,例如: ```json { "scripts": { "dev": "cross-env NODE_ENV=development umi dev", "build": "cross-env NODE_ENV=production umi build" } } ``` 在上述代码中,我们定义了两个命令,一个是`dev`命令,一个是`build`命令。在这两个命令中,我们使用了cross-env库来定义环境变量`NODE_ENV`,值分别为`development`和`production`。 3. 在.env文件中定义环境变量umi中,还可以使用`.env`文件来定义环境变量。在`.env`文件中,可以定义多个环境变量,例如: ``` API_URL=http://localhost:3000 DEBUG=true ``` 在应用程序中,可以通过`process.env.API_URL`和`process.env.DEBUG`来访问这两个环境变量。 需要注意的是,`.env`文件中定义的环境变量只能在开发环境中使用,而在生产环境中,需要使用`define`或`cross-env`来定义环境变量

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hzxOnlineOk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值