前端工程,yarn run start配合Jenkins脚本实现命令传参

问题描述:

前端工程里,比较常见的会遇到,比如编译的时候,需要分Release和Dev环境编译,手工的话,以CRA为例子,可以在项目根目录里定义.env文件,在run build之前手动改.env文件内容

/* .env */
REACT_APP_ENV=DEV
REACT_APP_LANGUAGE=en
REACT_APP_ROUTE_NAME=edu_loan

在项目里读取可以是:

const env = process.env.REACT_APP_ENV;
console.log("env", env); // DEV

但是遇到jenkins自动化部署,就不能这么来了,不然每次都要重新git push一下.env的变化,会很麻烦,怎么解决呢?

解决:

目光来到package.json

"scripts": {
    "start": "react-app-rewired start",
    "build": "react-app-rewired build",
  }

Jenkins脚本,走的也是yarn run build,那么新定义一个命令,命令传参,覆盖.env的值即可

在mac+linux下,

"scripts": {
    "start": "react-app-rewired start",
    "build": "react-app-rewired build",
    "build:release": "REACT_APP_ENV=RELEASE react-app-rewired build",
  }

而在win下

"scripts": {
    "start": "react-app-rewired start",
    "build": "react-app-rewired build",
    "win-build:release": "set REACT_APP_ENV=RELEASE&& react-app-rewired build",
  }

考虑团队开发者有可能用mac也可能用win,那么定义命令最终如下:

"scripts": {
    "start": "react-app-rewired start",
    "build": "react-app-rewired build",
    "build:release": "REACT_APP_ENV=RELEASE react-app-rewired build",
    "win-build:release": "set REACT_APP_ENV=RELEASE&& react-app-rewired build",
  }

在win下手动打release包,用yarn run win-build:release命令,mac和linux下用yarn run build:release,而jenkins一般部署在服务器上,则一般使用yarn run build:release来进行生产部署,而视要部署环境,部署脚本可以分别让Jenkins执行不同的命令,Perfect

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容