![]() | 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 shakaraka PRO 这个是 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 5: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 2I0Mto2kjm0c0B9i 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 linkopeneyes 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 |