很多时候,一套代码需要同时上线不同环境,对于不同的环境我们所展示页面、功能有时会有很大变化,那么我们如何应对这样的问题呢?
首先,我们将所有环境存储在envs文件夹中的JSON文件中。,每个环境将具有不同的URL。也可以根据需要添加任意多个变量!
//envs/devA.json

{   
    "URL": "https://devA.api.com",
}

//envs/dev.json

{   
    "URL": "https://dev.api.com",  
}

//envs/prod.json

{   
    "URL": "https://prod.api.com", 
}

现在,我们将创建一个节点脚本,该脚本将在每次我们想要切换环境时更改环境文件。我将其放在脚本文件夹中(在该文件夹中,我还有其他脚本可以自动执行构建过程的其他部分)脚本

set-environment.js

#!/ bin/node
const fs = require("fs");//获取传递给节点脚本的环境字符串  
const environment = process.argv[2] //读取json文件的内容  
const envFileContent = require(`../envs/$ {environment} .json`); //将env.json文件内的json复制到  
fs.writeFileSync("env.json", JSON.stringify(envFileContent, undefined, 2));

首先,它在一个变量中存储的第一个参数,当你调用脚本,那么它将require里面的文件ENVS具有相同的名称,最后将创建一个env.json文件包含envFileContent内容的根文件夹。我们调用node scripts/set-environment.js开发
env.json文件在正确的位置,可在package.json文件中设置一些脚本,以切换环境而无需在终端中键入所有单词:只需键入yarn env:dev即可。

{   
    "name": "您的应用程序名称",
    "scripts": {   
    "start": "start",
    "env: dev”:"node scripts/set-environment.js dev",
    "env: devA":"node scripts/set-environment.js devA",
    "env: prod":"node scripts/set-environment.js prod,
    "poduction",...   
 },
 "dependencies":{...},
 ...   
}

启动的时候先根据需要启动对应的env命令(npm run env: dev) 然后在启动npm run start命令启动项目, 也可以使用concurrently进行启动命令合并。只需要从src/env.json文件导入变量,就可在代码中使用新的.env文件

import React from 'react'
import {API_URL }from'./env.json
const App =()=>{
  return(
    <View>
        <Text>{API URL}</Text>
      </View>
export default App

在package.json建一些新脚本,打包出来的文件(src/env.json)统一放置到一个文件下只需要修改/set-environment.js文件中fs的写入路径即可。


辶辶
1 声望1 粉丝