前端自动部署脚本
条评论当一套前端代码需要根据配置打包成不同版本且部署到不同环境时,如果还是手动完成这些事情,这无疑是非常浪费时间的。这个时候自动打包、自动部署脚本就应运而生了。
前端
NodeJS、Angular13
需求
一套前端代码,打包时可以选择企业版、企业版深色、社区版、社区版深色等版本,部署时可以选择01、02、03、04等环境
自动打包
对于 当执行打包、部署命令时 提示版本选择、环境选择这一功能,可以使用Linux脚本实现,也可以使用inquirer实现。但由于inquirer是基于node,意味着选择版本之后也需要使用nodejs代码启动打包命令ng build
,虽然能够通过child_process
(具体可参考这里)实现,但经过测试,不能输出打包日志,所以放弃了这种方案,改用Linux脚本实现。
1 |
|
对于Angular工程,我们可以通过在environments/environment.ts
中自定义变量的方式控制不同的版本,形如这样:
1 | export const environment = { |
但是在打包时如何更改versionType
的值呢?是不是可以这样ng build --env.versionType=xxx
?很遗憾,Angular CLI并不支持这样,ng build
的参数是不能自定义的。虽然这样,我们仍然可以通过如下两种方式达到目的:
- 在
ng build
之前通过nodejs读写文件的方式更改environments/environment.prod.ts
中versionType
的值 - 通过配置
angular.json
中的configurations
,然后指定ng build --configuration=xxx
来控制打包时使用哪个配置信息即可,形如这样:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38"configurations": {
"Enterprise": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.enterprise.ts"
}
],
"outputHashing": "all"
},
"Enterprise-Dark": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.enterprise-dark.ts"
}
],
"outputHashing": "all"
},
"Community": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.community.ts"
}
],
"outputHashing": "all"
},
"Community-Dark": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.community-dark.ts"
}
],
"outputHashing": "all"
}
}
自动部署
自动部署也是有两种方案:sshpass
和node-ssh
。
1 |
|
这种方案在基于Intel芯片的Mac上测试成功了,但是在搭载Apple芯片的Mac上执行不成功,暂时不知道什么原因。
1 | const path = require('path')//引入模块 |
./util.js代码如下:
1 | exports.underLine = (value) => { |