需求
- 前端打完包給測(cè)試赋朦,需要改動(dòng)env中的配置 如:請(qǐng)求地址,logo李破,title宠哄;每次修改再去打包太麻煩,
思路
- 把env包提取到build打包后的文件中嗤攻,方便每次修改
代碼實(shí)現(xiàn)
#!/bin/bash
# 配置時(shí)間戳當(dāng)做hash值毛嫉,防止緩存
TIME=$(date "+%Y%m%d%H%M%S")
# 新建globalConfig.js
touch globalConfig.js
# 抓取.env.production 中的參數(shù)
# 注意.env.production 格式應(yīng)為:
# REACT_APP_API_TITLE=title 等號(hào)左右不要有空格
function copy_env_to_config_json() {
array=($(cat .env.production))
echo -e "window.__globalEnvData__={" > globalConfig.js
for ((i=0;i<${#array[@]};i++)); do
num=$(echo $((${#array[@]}-1)))
name=$(echo ${array[$i]%=*})
value=$(echo ${array[$i]#*=})
if [[ ${name} && ${value} ]];
then
if [[ "$i" == ${num} ]];
then
echo -e "\"${name}\":\"${value}\"" >> globalConfig.js
else
echo -e "\"${name}\":\"${value}\"," >> globalConfig.js
fi
fi
done
echo -e "}" >> globalConfig.js
}
copy_env_to_config_json
echo "1. 保存config配置文件"
grep "process.env" -rl ./src* | xargs sed -i "s/process.env/window.__globalEnvData__/g"
echo "2. 修改process.env 為window.__globalEnvData__"
npm run build
echo '3. 構(gòu)建項(xiàng)目'
grep "window.__globalEnvData__" -rl ./src* | xargs sed -i "s/window.__globalEnvData__/process.env/g"
echo "3.1 還原源文件"
sed -i "s%</head>%<script src='/globalConfig/globalConfig${TIME}.js'></script></head>%g" ./build/index.html
echo "4. 設(shè)置index.html script引入"
mkdir ./build/globalConfig
mv ./globalConfig.js ./build/globalConfig/globalConfig${TIME}.js
echo '5. 移動(dòng)配置文件到構(gòu)建完的項(xiàng)目'
最后
- 打包完之后會(huì)有一個(gè)
build/globalConfig/globalConfig${TIME}.js
文件,在這修改即可妇菱!
注意
![\color{red}{此方法僅用于內(nèi)部測(cè)試使用承粤,正式環(huán)境還需要正常打包,因?yàn)榭梢酝ㄟ^(guò)修改window內(nèi)的方法修改你的請(qǐng)求闯团,造成安全問(wèn)題P岭!7拷弧@嘶洹!}](https://math.jianshu.com/math?formula=%5Ccolor%7Bred%7D%7B%E6%AD%A4%E6%96%B9%E6%B3%95%E4%BB%85%E7%94%A8%E4%BA%8E%E5%86%85%E9%83%A8%E6%B5%8B%E8%AF%95%E4%BD%BF%E7%94%A8%EF%BC%8C%E6%AD%A3%E5%BC%8F%E7%8E%AF%E5%A2%83%E8%BF%98%E9%9C%80%E8%A6%81%E6%AD%A3%E5%B8%B8%E6%89%93%E5%8C%85%EF%BC%8C%E5%9B%A0%E4%B8%BA%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E4%BF%AE%E6%94%B9window%E5%86%85%E7%9A%84%E6%96%B9%E6%B3%95%E4%BF%AE%E6%94%B9%E4%BD%A0%E7%9A%84%E8%AF%B7%E6%B1%82%EF%BC%8C%E9%80%A0%E6%88%90%E5%AE%89%E5%85%A8%E9%97%AE%E9%A2%98%EF%BC%81%EF%BC%81%EF%BC%81%EF%BC%81%EF%BC%81%7D)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者