UmiJS 配置多个环境,打包不同代码

假设:项目有多个环境,如正式环境、测试环境、第三方。

问: 部署多台服务器,要求请求接口不同,如何做到同用一份代码,去做标识区分呢?

手把手-带你操劳起来

步骤:

#【已安装-直接忽略】安装。因为在window和mac下用到命令是不同的。这里要用到cross-env,这个是解决不同系统之前的命令兼容问题

 yarn add cross-env

1、启用测试环境

第一步:设置。 在package.json中设置下面代码

 测试环境-启用   取名为 a_test

"scripts": {
  "a_test": "npm run start:a_test",
  "start:a_test": "cross-env BUILD_ENV=a_test BUILD_VERSION=8080 UMI_ENV=dev umi dev"
}

 第二步:umi项目中,找到配置文件config.ts,或者在config.js

    前提:需要 Node.js中的一个环境对象 process.env ,其中保存着系统的环境的变量信息.【它是全局对象--直接拿过来用】

   启用环境:yarn a_test 

   直接在配置文件,console.log(process.env) 可以打印出值传值 BUILD_EN 和 BUILD_VERSION

   有了标识就可以快乐的玩耍了

第三步:umi项目中,修改配置文件config.ts,或者在config.js

import { defineConfig } from 'umi';
import { umirc } from './umirc';
const { BUILD_EN,  BUILD_VERSION } = process.env;
export default defineConfig({ // 其他配置项-我这就忽略了
   define: { // REAML 是我随意取的
     REAML: umirc(BUILD_EN, BUILD_VERSION).reaml
   }
})

第四步:在umirc文件去配置接口域名和端口号

export function umirc(BUILD_EN, BUILD_VERSION) {
  let reaml = "";
  switch (BUILD_EN) {
    case "test": // 测试环境-121.60.150.50[域名随便写的][BUILD_VERSION是端口,根据自己需要]
      reaml = `http://121.60.150.50:` + BUILD_VERSION; 
      break;
    case "pro": // 正式环境[域名根据自己项目需要]
      reaml = `http://pro.xuechenghong`; 
      breal;
    default:
      break;
  }
  // 返回的值,根据自己需要定
  return { reaml: reaml };
}

第五步:网络请求,我选择了umi-request当然根据你们自己选择  

// 我创建的request.js文件
import { extend } from 'umi-request';

/**
 * 配置request请求时的默认参数
 */

const request = extend({
  // 默认错误处理
  // eslint-disable-next-line no-undef
  errorHandler,
  // requestType: 'form',
  timeout: 90000, // 设置请求等待时间(毫秒)
});

/**
 * 请求拦截器
 * @author lishen
 */
request.interceptors.request.use((url, options) => {
// REAML 就是我们前面步骤中在配置文件自定义的【不知道,往前面步骤找】【它已是全局变量-直接使用】
  url = REAML + url
  return {
    url: url,
    options: {
      ...options, // options我省略了
      headers: {
        // 我省略了
      },
    },
  };
});

// 响应拦截器等等 我这省略了

第六步:  API服务,创建文件services.js【根据自己项目的需要】

import request form  './request.js'

// 获取爱的列表
export async function mList(data) {
  return request('/LOVE/xuechenghong/get', {
    method: 'POST',
    data: data
  })
}

2、打包测试环境

第一步:设置。 在package.json中设置下面代码

"scripts": {
  "build:test": "cross-env BUILD_ENV=a_test BUILD_VERSION=8080 BUILD_TYPE=build umi build"
}

后面步骤与前面相似,不管正式环境、测试环境、第三方,相类似

你学废了吗?

Umi(一个基于React的前端框架)中,多环境配置主要是为了支持开发、测试、生产等多个阶段的不同设置。Umi通过`.umirc.js`(或`.umi.config.js`)文件来管理项目的配置,你可以根据不同环境(如`development`, `production`等)创建不同配置块。 以下是如何在Umi中进行多环境配置的基本步骤: 1. **创建`.umirc.js`文件**:如果还没有,你需要先初始化一个基本的Umi项目并生成这个文件。 ```js // .umirc.js 或 .umi.config.js module.exports = { // ... }; ``` 2. **添加环境变量**: - 添加默认环境配置: ```js env: { production: process.env.NODE_ENV === 'production', development: !process.env.NODE_ENV || process.env.NODE_ENV === 'development', // 非生产环境即视为开发环境 }, ``` - 根据环境加载对应的配置: ```js plugins: [ ['umi-plugin-react', { antd: true }], { enable: env.production, path: '@umijs/plugin-prod', options: {}, }, ], ``` 3. **针对不同环境修改配置**: - 对于开发环境,可以设置更详细的调试选项: ```js develop: { extraBabelPlugins: [['import', { libraryName: 'antd', libraryDirectory: 'es', style: true }]], }, ``` - 生产环境可能需要压缩代码和开启性能优化: ```js build: { hash: true, minify: env.production, }, ``` 4. **环境切换**:在运行项目前,可以通过设置`NODE_ENV`环境变量来选择特定的环境。例如: - 开发环境:`npm run dev` - 生产环境打包:`npm run build -- --prod`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值