一、你正在面对的问题
Vue 2 已于 2023-12-31 EOL,最终版本 2.7.16。这意味着:
- 官方不再合并任何 PR,包括安全漏洞;
- 新披露的
CVE-2024-9506、CVE-2024-6783等永远不会在上游被修; - 公司内 SCA 扫描会一直亮红,合规上线越来越难过。
但大多数中后台 Vue 2 项目跑了五六年,组件库、Vuex、路由全是 Vue 2 生态------整体升 Vue 3 的 ROI 极低,不是不想升,是升不动。
夹在中间,最常见的三种做法都不舒服:
| 你现在的做法 | 痛点 |
|---|---|
patch-package / pnpm patch 自己贴 |
每个仓库贴一份,难追溯,新人接手懵 |
内网发 @xxx/vue |
业务方所有 import Vue from 'vue' 都得改 |
| 锁版本忽略告警 | 合规过不去,审计追责 |
二、这个分支直接解决了什么
一句话:只修 CVE,不改任何 API,长期维护。
当前版本已经修掉的漏洞:
| CVE | 类型 | 影响 |
|---|---|---|
| CVE-2024-9506 | ReDoS(正则灾难性回溯) | 模板编译器在恶意输入下被卡死 |
| CVE-2024-6783 | XSS / 原型污染 | codegen 出来的代码可被注入 |
| 多项传递依赖 CVE | 多种 | 构建链拉警报 |
pnpm audit 在装上这个分支之后只剩 1 个 low(elliptic,上游本身没修,整个 npm 生态都消不掉),红灯转绿。
对你意味着:
- 合规扫描不用再做"例外申报";
- 不需要改任何业务代码、不需要测全量回归;
- 跟着 tag 走,每次有新 CVE 修复就升一个版本号即可。
三、接入有多简单
把 package.json 的 vue 替换成 git tag,仅此一步:
jsonc
{
"dependencies": {
"vue": "git+https://github.com/joygqz/vue.git#v2.7.16-security.1",
"vue-template-compiler": "git+https://github.com/joygqz/vue.git#template-compiler-v2.7.16-security.1",
"vue-server-renderer": "git+https://github.com/joygqz/vue.git#server-renderer-v2.7.16-security.1",
"@vue/compiler-sfc": "git+https://github.com/joygqz/vue.git#compiler-sfc-v2.7.16-security.1"
}
}
只装用得到的子包即可,npm / pnpm / yarn 通用,不需要任何 patch 或 overrides。
装完跑一行验证:
sh
node -p "require('vue/package.json').version"
# 2.7.16-security.1
业务代码里所有 import Vue from 'vue' 一行都不用动。仓库里附了一个 demo-vue/(webpack + vue-loader@15)作为集成示例,clone 下来能直接跑通。
四、为什么可以放心用
安全分支最大的成本是"信任",所以这个仓库刻意做了几件事:
-
完全开源、MIT 协议,沿用 Vue 原作者 Yuxi You 的授权;
-
每个 tag 对应一个 commit hash ,公司安全/合规同事可以直接 diff 上游
2.7.16看改了什么------你能确切知道引入了什么、没引入什么; -
边界明确 :只修已披露的 CVE,不引入任何新特性、不修改任何 API------这是它能被信任、能被安全团队过审的前提;
-
审计示例 :以 CVE-2024-9506 为例,核心修复就一行------给正则加个
^锚点:diff- new RegExp('([\\s\\S]*?)(</' + stackedTag + '[^>]*>)', 'i') + new RegExp('^([\\s\\S]*?)(</' + stackedTag + '[^>]*>)', 'i')diff 干净到可以让安全同事一眼看完,不存在"夹带私货"的空间。
五、它适合谁
适合:
- 跑在生产、短期内升不到 Vue 3 的 Vue 2 项目;
- 被 SCA 红灯卡住合规上线的团队;
- 政企交付项目,需要"明确维护方"作为答复证据;
- 想在内网维护一份私有 fork 的团队(仓库里附了发布脚本,整套流程可以迁到公司 GitLab)。
不适合:
- 新项目(请直接上 Vue 3 + Vite);
- 希望持续拿到新特性的项目(这里永远不会有新特性,这是设计)。
六、最后
Vue 2 不该因为 EOL 就在生产环境裸奔,但也不值得为它再投入大量精力升级。
只修 CVE、不动 API、长期维护、开源免费、一行接入------这是这个仓库能给你的全部,也是它能被信任的全部。
- 仓库 github.com/joygqz/vue/
- 直接接入版本号:
v2.7.16-security.1 - 新 CVE 持续跟进,欢迎 issue 上报
如果对你有帮助,点个 Star,让更多还在跑 Vue 2 的团队能搜到它。