诚实说明:这一条本站没有做——发两个发行版需要真实的双宿主测试环境(0.2.1与0.2.2各一个),本机只有0.1.2。所以下面是可查证的事实与可选方案,不是已验证的做法。
可查证的事实:两条线确实在并行
npm上的发布时间证明0.2.1与0.2.2是并行维护的,不是简单的新盖旧:
| 版本 | 发布时间 | 说明 |
|---|---|---|
| 0.2.2-alpha.2 | 2026-10-27 | 0.2.2线开始 |
| 0.2.1-rc.5 | 2026-10-29 | 比上一行晚两天,但版本号更小 |
| 0.2.2-rc.1 | 2026-11-04 | 成为latest |
| 0.2.1-rc.4 | 2026-10-26 | 0.2.1线最后一个rc |
所以「只支持最新版」的假设在这里会漏掉一批用户。
三条可选路线
| 路线 | 怎么做 | 代价 |
|---|---|---|
| 一个大版本覆盖两代 | engines.dsh写成 >=0.2.1-rc.5 || >=0.2.2-rc.1,代码里按宿主能力分支 | 最好维护;但要在两代上都实测 |
| dist-tag分流 | 同一包名,发两个tag指向不同版本 | 用户必须知道该装哪个tag;装错不会被拦 |
| 两个包名 | 如plugin与plugin-legacy | 最清晰;但要维护两份issue与文档 |
参考现成的做法
dsh-context选的是第一条:>=0.2.0-rc.2 || >=0.2.1-rc.2 || >=0.2.2-rc.1——把三代入口都列上,用一个版本覆盖。这也是本站在实测中唯一见到的多代写法。
要补这条实测,需要:两个宿主版本各起一次、同一份插件代码、确认两代都能加载并apply。本站缺0.2.1 / 0.2.2宿主环境,所以标「待实测」。