前端项目添加 打包脚本 部署脚本 生成改动日志脚本

打包脚本

package.json 添加

1
2
3
// ..
"zip": "zip -r dist-$(git rev-parse --abbrev-ref HEAD)-$npm_package_name-$npm_package_version-$(date +'%Y_%m_%d').zip dist/ && open .",
"bz": "npm run build && npm run zip"

然后运行 npm run bz 就能直接打开打包好的zip包目录

部署脚本

首先需要目标服务器运行sshd服务,然后添加部署脚本来执行

类unix系统安装sshd服务

懂得都懂 不懂Google

对于Windows需要安装、启动sshd服务,参考这个: 安装适用于 Windows 的 OpenSSH,安装截图

设置-系统-可选功能 搜索ssh 添加 openssh服务器

添加服务

然后启动服务

启动服务

测试一下 ssh 用户名@ip 能连上就好了

package.json 添加

1
"bscp": "npm run build && scp -r dist rst@10.50.16.81:\\E:/LMS/nginx/html/admin",

把 服务器的 用户@地址:路径 修改一下就可以了

运行 npm run bscp 就会打包 上传文件夹到对应服务器 可能需要输入服务器密码

PS:首次连接输入yes就好了

1
2
3
4
5
6
# ..
The authenticity of host '10.50.16.22 (10.50.16.22)' can't be established.
ED25519 key fingerprint is SHA256:OMzihK7EXGWy2Kj6nek+YzaN3xyOR7jE+OWsAk6muiw.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
# ..

对于Windows服务器 jenkins的部分自动化部署

安装配置完Jenkins后自动添加一步部署dist文件夹到Windows服务器上

Jenkins的docker需要一个sshpass的工具,可以docker(ubuntu)宿主机(ubuntu)安装了拷进去 参考这个 How to pass password to scp?

添加部署脚本运行:

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
39
pipeline {
agent any
tools {nodejs "nodejs18.10.0"}
parameters {
gitParameter branchFilter: 'origin/(.*)',defaultValue: 'master',name: 'branch',type: 'PT_BRANCH'
}
stages {
stage('拉取代码') {
steps {
echo '拉取代码'
git branch: "${params.branch}", credentialsId: 'xxxx-yyyy-zzzz', url: 'https://codeup.aliyun.com/xxxx/node/pepper.git'
}
}
stage('编译构建') {
steps {
sh "node -v && npm -v"
sh "rm -rf dist"
echo "${params.cmd}"
script {
if (params.env == 'vue3') {
sh "${params.cmd}"
}else {
sh "npm install && npm run ${params.action}:${params.app}"
}
manager.addShortText("${params.branch}")
}
}
}
// 添加这个
stage('部署') {
steps {
echo "${params.server}"
sh "cd packages/admin && sshpass -p '<改成你的服务器密码>' scp -r dist <改成你的服务器用户名>@${params.server}"
}
}
// 。
}
}

params.server作为Choice Parameter,参数参考:

1
2
10.50.16.81:E:/XXX/nginx/html/admin
10.50.16.22:C:/YYY/nginx/html/admin

不用sshpass,别的思路就是用公钥和私钥,在Windows上 C:\Users\<用户名>\.ssh\authorized_keys文件里追加docker中的公钥文件内容,需要进Jenkins docker生成,一般会在/root/.ssh/id_rsa.pub这样,但是docker重启会销毁,不过sshpass也是

当然Windows的ssh公钥还有一个需要注意就是在C:\ProgramData\ssh\sshd_config中删除最后2行,参考这个SSH免密登录(公钥登录)到win10(解决authorized_keys无效的问题):

1
2
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

然后重启ssh服务

生成改动日志脚本

前端项目根据git提交记录自动生成 CHANGELOG.md

自动打包压缩重命名,简化项目开发流程

配置

首先需要全局安装conventional-changelog-cli 安装指令:

1
npm install -g conventional-changelog-cli

配置 package.json:

1
2
3
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
"zip": "zip -r dist-$(git rev-parse --abbrev-ref HEAD)-$npm_package_name-$npm_package_version-$(date +'%Y_%m_%d').zip dist/ && open .",
"bz": "npm run build && npm run zip"

工作流程

  1. 提交更改
  2. 修改 package.json 文件中的 version
  3. 执行 package.json 文件中的 changelog 脚本
  4. 提交 package.jsonCHANGELOG.md 文件
  5. 打标签
  6. push到远程仓库

使用脚本

执行 npm run changelog, 会在根目录生成或者追加更改日志到 CHANGELOG.md 文件

执行 bz, 会执行build并打包为zip压缩包路径 压缩包命名为 dist-<分支名>-<包名>-<包版本>-<年_月_日>.zip

注意⚠️ Mac自带 open 指令来打开文件夹其他系统自己想办法

参考

GitHub仓库 conventional-changelog

changelog推荐工作流程文档

Angular约定式提交规范

1
2
3
4
5
<类型>[可选 范围]: <描述>

[可选 正文]

[可选 脚注]

基于 Angular 约定中推荐的commit类型:
fix:feat:build:chore:ci:docs:style:refactor:perf:test:

1
2
3
4
5
6
7
8
9
10
fix: 类型 为 fix 的提交表示在代码库中修复了一个 bug(这和语义化版本中的 PATCH 相对应)。
feat: 类型 为 feat 的提交表示在代码库中新增了一个功能(这和语义化版本中的 MINOR 相对应)。
build: 用于修改项目构建系统,例如修改依赖库、外部接口或者升级 Node 版本等;
chore: 用于对非业务性代码进行修改,例如修改构建流程或者工具配置等;
ci: 用于修改持续集成流程,例如修改 Travis、Jenkins 等工作流配置;
docs: 用于修改文档,例如修改 README 文件、API 文档等;
style: 用于修改代码的样式,例如调整缩进、空格、空行等;
refactor: 用于重构代码,例如修改代码结构、变量名、函数名等但不修改功能逻辑;
perf: 用于优化性能,例如提升代码的性能、减少内存占用等;
test: 用于修改测试用例,例如添加、删除、修改代码的测试用例等。

SemVer 语义化版本 2.0.0

1
主版本号.次版本号.修订号-先行版本号或版本编译信息

前端 CHANGELOG 生成指南

适用于 Windows 的 OpenSSH 入门 | Microsoft Learn

scp from Linux to Windows [closed]

前端项目添加 打包脚本 部署脚本 生成改动日志脚本

https://miloweimo.github.io/article/前端项目添加脚本/

作者

Wei Mo

发布于

2024-06-26

更新于

2024-06-26

许可协议

评论