1
tao1991123 2022-05-07 15:08:22 +08:00
jenkins + 自己写脚本
|
2
dreasky 2022-05-07 15:11:12 +08:00
npm version patch 可以自动+1 版本的 写在脚本里 在加 package.json build script 里面
|
3
passon 2022-05-07 15:13:18 +08:00
这种方式只能用于测试环境吧,生产环境缓存策略就失效了
|
4
wunonglin 2022-05-07 15:26:08 +08:00
这个是 ci 做的事吧?你自己不用管
|
5
dengqing 2022-05-07 15:27:15 +08:00
方案没问题,我们目前发布就是这样
index.html 丢在服务器交给 nginx 管理 所有静态资源丢到 oss ,目录就是 tag 名 我们发布正式环境都会打个 tag:release-v1.x.x 那么路径就是 release-v1.x.x ,交给 ci 跑就行 |
6
iqoo 2022-05-07 15:41:46 +08:00
一个小更新,所有老版本的资源缓存全部失效😁
|
7
dcsuibian 2022-05-07 15:50:49 +08:00
加这个版本具体是想干什么?我没看出这个的好处
|
9
Envov 2022-05-07 15:57:21 +08:00
需要前端配合写一个脚本,npm run release
release 可以跟一个 --tag 的子选项,ci 工具接收到发布条件的时候,比如 git tag 的推送,把 tag 内容作为子选项的参数执行构建 例如我推送了 tag 为 1.0.1 的标签到 master ,触发了 ci 工具的更新,ci 工具执行的是 npm run release --tag 1.0.1 。 前端实现 release 的方法很多,最终目的都是把 tag 作为 webpack 的 publicPath 的前缀,以及修改导出资源的文件夹名称。 |
10
iapplebear 2022-05-07 16:02:24 +08:00
我用 Google zx 专门写了个版本修改的功能,就是在你 prod build 之前检查下当前版本号,然后自动生成一个版本号或者在命令行输入一个新版本号,后续 index.html 引入新版本号的静态文件
|
11
Biwood 2022-05-07 16:53:08 +08:00 via Android
脚本不就是干这个的吗,写 shell 或 python 或 nodejs 脚本都能做到,语法不同思路一样:从 package.json 读一下最新 tag ,根据 tag 新建文件夹,把 dist 文件复制过去,完事。
|
12
serge001 2022-05-07 20:14:00 +08:00
有了解过 webpack 的 hash 配置么?先了解下你的需求是不是可以通过 hash 解决
|
13
Pastsong 2022-05-07 20:19:42 +08:00
用 cdn 加协商缓存,发布新版本 bust cdn cache 就行
|
14
dcsuibian 2022-05-07 20:29:43 +08:00
@i3x 可是跟 #12 说的一样,缓存问题感觉通过分块 hash 码变更才是更好的方式。这样分块内容改了就变,不改就不变。感觉比版本号更好。
|
15
learningman 2022-05-07 20:51:17 +08:00
@i3x 你有 10m 的 js 文件,然而你只改了个 config.js
|
17
wangkun025 2022-05-07 22:13:42 +08:00
运维:赏口饭吃吧。
|
18
Buges 2022-05-08 11:07:26 +08:00 via Android
为啥 js 和 css 加版本,而 index.html 就要覆盖?
整个构建输出目录加版本不行吗? |
19
sjhhjx0122 2022-05-11 10:31:04 +08:00
试试 semantic-release ?
|
20
susumail 2022-05-17 12:33:54 +08:00
用时间戳做版本号即可
build.sh: export currentTime=$(date "+%Y%m%d%H%M%S"); mkdir output/webroot/ cp -r dist/* output/webroot/$currentTime 再根据 process.env.currentTime 在 webpack.config 修改 publicPath |