很多时候,一套代码需要同时上线不同环境,对于不同的环境我们所展示页面、功能有时会有很大变化,那么我们如何应对这样的问题呢?
首先,我们将所有环境存储在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的写入路径即可。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。