ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何用 @astrojs/upgrade 命令同步升级 Astro 项目与官方集成(含 beta tag)

如何用 @astrojs/upgrade 命令同步升级 Astro 项目与官方集成(含 beta tag) 如何用 astrojs/upgrade 命令同步升级 Astro 项目与官方集成含 beta tag【免费下载链接】astroThe web framework for content-driven websites. ⭐️ Star to support our work!项目地址: https://gitcode.com/GitHub_Trending/as/astro当你升级 Astro 版本时package.json里的官方集成astrojs/*往往还需要跟着升。astrojs/upgrade是 Astro 仓库自带的命令行工具可以在一次运行中把当前项目里的astro与所有官方集成同步升级到目标版本也支持把整个项目升到beta等 dist-tag 对应的预发布版本。本文基于仓库内 packages/upgrade 的文档与源码给出从准备、执行到验证与排错的完整操作路径。准备条件运行前需要满足以下前提均有源码/文档依据Node.js v22 或更高。入口 upgrade.mjs 会先检查 Node 主版本低于 22 时直接报错退出提示Please use Node.js v22 or higher.package.json 中engines声明为22.12.0。在一个 Astro 项目中运行。工具会读取当前目录的package.json要求其中dependencies或devDependencies包含astro否则终止见下文错误处理。可以访问 npm registry。工具通过包管理器配置的 registryconfig get registry未配置时回退到官方 registry解析各包的目标版本。不要把它安装为项目依赖。README 明确说明astrojs/upgrade不应加入项目依赖而是用npx或dlx作为一次性可执行程序运行。运行升级命令在项目根目录执行三种包管理器对应三种写法README# With NPM npx astrojs/upgrade # With Yarn yarn dlx astrojs/upgrade # With PNPM pnpm dlx astrojs/upgrade命令的实际用法形式为[version] [...flags]help.ts其中version是一个可选的位置参数缺省值为latest。可用 flag 只有两个--help-h显示所有可用 flag--dry-run只走一遍流程、展示将发生的变更不执行安装。工具会自动检测项目使用的包管理器按 install metadata、lockfile、packageManager字段等策略context.ts检测不到时默认按npm处理后续安装命令因此会用你项目实际在用的包管理器执行。指定 tag把项目同步升级到 beta 版本version参数用于指定解析各包所对照的 dist-tag。不传时对照latestREADME、context.ts。Astro 在大版本正式发布前通常会先放出beta把现有项目及其依赖一并升到beta的写法是# With NPM npx astrojs/upgrade beta # With Yarn yarn dlx astrojs/upgrade beta # With PNPM pnpm dlx astrojs/upgrade beta指定 tag 后的版本解析行为verify.ts 的resolveTargetVersion某个包在该 tag 下没有发布版本时该包回退到latest对应的版本不会因此中断整体升级如果该 tag 指向的版本比项目已安装的版本更旧该包同样回退到latest避免降级只有非 major 的兼容性更新不会携带 dist-tag最终按具体版本号安装。先用 --dry-run 预览将要发生的变更如果不想立即改动项目先加--dry-run跑一遍。它会列出哪些包can be updated然后跳过实际安装输出一行--dry-run Skipping dependency installationinstall.tsnpx astrojs/upgrade --dry-run # 或预览 beta npx astrojs/upgrade beta --dry-run下面的示例输出取自 install.test.ts 的断言dry-run 措辞为can be updated实际执行时为will be updated◼ astro is up to date on v1.0.0 ● patch can be updated from v1.0.0 to v1.0.1 ● minor can be updated from v1.0.0 to v1.2.0 ▲ major can be updated from v1.0.0 to v3.0.0符号含义◼已是最新●普通更新▲major 更新黄色高亮。确认列表符合预期后去掉--dry-run正式执行。执行过程中的输出与验证正式运行时工具分 verify 和 install 两个阶段index.tsbanner 为Integration upgrade in progress.。判断升级是否完成看终端输出即可全部已是最新每个包打印is up to date on vX.Y.Z示例文本◼ astro is up to date on v1.0.0随后输出一条完成提示如Your integrations are up-to-date.、Everything is up to date.等messages.ts 中的随机文案具体哪一句不固定。有包被更新逐个包打印will be updated from vX to vY然后显示Installing dependencies with 包管理器...成功后 spinner 结束文本为Installed dependencies!最后附一句道别语。落盘验证工具通过包管理器的 install 命令把astro与astrojs/*的目标版本写入package.json并安装因此升级后可在package.json中核对这些包的版本号是否变为预期值。出现 major 版本时的确认交互如果升级目标包含 major 版本变更含beta这类 premajor 跳升工具会暂停并询问Some packages have breaking changes. Continue?默认Continue。此时还会打印check Be sure to follow the CHANGELOG.并逐包给出 CHANGELOG 链接对astro本身的新 major链接指向对应的官方升级指南verify.ts 中按https://docs.astro.build/en/guides/upgrade-to/v大版本号/规则生成并校验可访问性访问不到时回退为该包的 CHANGELOG。选择继续继续执行安装选择取消工具以退出码 0 结束不安装任何依赖install.test.ts 中major (reject)用例断言了该行为。major 升级后请务必按工具给出的指南/CHANGELOG 完成代码迁移工具只负责改版本号不负责改代码。安装失败时的常见提示以下提示均来自 install.ts 与 verify.ts 的实际逻辑提示原文触发条件处理Astro installation not found in the current directory.当前目录package.json中找不到astro依赖确认在 Astro 项目根目录下运行Unable to connect to the internet.非 dry-run 模式下无法解析 registry 域名恢复网络后重试Version tag could not be found!所有相关包都无法解析出目标版本检查 tag 是否存在如beta是否已发布Dependencies failed to install, please run the following command manually: ...安装命令失败退出码 1直接复制终端里给出的完整 install 命令手动执行按报错信息处理两个包管理器特有的行为值得注意npm若首次安装因 peer dependency 冲突失败工具会自动带--legacy-peer-deps重试一次二次仍失败则给出需手动执行的命令install.test.ts 对两次尝试均有断言。pnpm如果失败信息包含MINIMUM_RELEASE_AGE说明被 pnpm 的minimumReleaseAge策略拦截工具会明确提示并给出需手动确认执行的命令pnpms minimumReleaseAge policy blocked the installation. Run the following command manually to confirm the update: ...。Yarn使用 Yarn BerryPnP时若项目缺少yarn.lock工具会先写入一个空yarn.lock再执行安装该文件随后会被安装过程覆盖源码注释见 install.ts 的ensureYarnLock。适用范围与限制工具只升级astro及astrojs/作用域下的包且排除astrojs/upgrade自身package.json中的第三方依赖不受影响verify.ts 的isAstroPackage/isAllowedPackage。版本号无法按 semver 解析的条目会被跳过。它只同步package.json里的版本并安装依赖major 版本的代码迁移、配置变更仍需按终端中给出的 CHANGELOG/升级指南自行完成。实现细节如需要可继续查看 packages/upgrade/src 下的verify、install两个动作以及 test 目录 中对各类终端输出的断言。【免费下载链接】astroThe web framework for content-driven websites. ⭐️ Star to support our work!项目地址: https://gitcode.com/GitHub_Trending/as/astro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表