
开发工具CLI【免费下载链接】yarnThe 1.x line is frozen - features and bugfixes now happen on https://github.com/yarnpkg/berry项目地址https://gitcode.com/gh_mirrors/ya/yarn点击查看免费下载Yarn 1.x 分支已经冻结本仓库 CHANGELOG.md 完整记录了从 1.12.0 到 1.22.11 之间 Yarn 1.x 的每一次行为变更涵盖 PlugnPlayPnP、安全审计、workspaces、离线镜像、版本切换等核心能力的演进。阅读本文你将掌握 Yarn 1.x 末期各版本引入的功能、踩过的坑与修复路径并理解这些变更在 src 源码中的具体实现位置为升级到 Yarn 2/3 做好充分准备。Yarn 1.x 的现状与版本演进脉络Yarn 1.x 已停止功能性开发官方建议用户迁移到 Yarn 3.0。从 1.12.0 到 1.22.11Yarn 1.x 经历了多次小版本迭代其中 1.19.0、1.19.1、1.12.3 三次发布都带有cache bump缓存升级升级后第一次 install 会比平时稍慢尤其是未使用离线镜像功能的用户之后会恢复正常。值得注意的是部分版本号存在发布事故版本说明1.22.7无任何内容变更由发布问题触发1.22.4 / 1.22.3无任何内容变更由基础设施测试触发1.22.10调整 preinstall 检查Node 以 root 安装时不再报错代价是 Windows 上该检查不生效1.15.1因发布问题不存在1.12.2不存在由系统异常导致1.22 系列面向 Corepack 与 Yarn 2 的兼容收尾1.22 系列是 Yarn 1.x 的最后功能版本重点工作是让 Yarn 1.x 与新版生态Corepack、Yarn 2兼容共存。1.22.11SIGTERM 转发与 Corepack 兼容修复yarnPath进程的 SIGTERM 转发此前yarnPath指定的二进制进程接收到的 SIGTERM 不会被转发给其子进程1.22.11 修复了该问题。yarn init -2与 Corepack 兼容确保在 Corepack 环境下也能正常使用yarn init -2而普通yarn init不带-2行为不变。1.22.6preinstall 检查与 init 输出清理使用-2标志运行yarn init不再打印set version输出。新增 preinstall 检查确保npm install -g yarn在 Corepack 下也能正常工作对其他安装方式无影响。1.22.5.cjs文件支持与 pack 排序yarnPath启动的文件若为.cjs扩展名将使用execPath作为执行环境。yarn set version生成的本地 Yarn 版本文件改为.cjs后缀。yarn pack现在会对文件排序使 Windows 与 Unix 系统产生一致的压缩包布局。1.22.2pack 默认忽略.yarnrc.ymlyarn pack默认忽略.yarnrc.yml文件避免将 Yarn 2 的配置打包进产物。对应实现在 src/cli/commands/pack.js 的忽略列表中明确包含.yarnrc.yml。1.22.1yarn-path 生命周期与相对路径修复yarn-path在其子进程退出前就提前退出的问题。yarn set version生成的yarn-path现在使用相对路径。.yarnrc.yml若为非法 YAML直接抛出异常而不是静默忽略。1.22.0init -2 与 set version 时代开启1.22.0 是 Yarn 1.x 中功能最丰富的版本之一实现yarn init -2用于初始化 Yarn 2 项目其实现见 src/cli/commands/init.js-2标志等价于--install berry会先执行policies set-version berry再继续交互式初始化。实现yarn set version version作为policies set-version的别名。yarn workspace pkg run command -- arg支持--之后的参数会被正确传递给 workspace 脚本。允许二进制名中再次包含点号。yarn set version错误处理改进。修复归档路径被错误清洗的问题。1.20 / 1.21workspaces 与 init 增强yarn workspaces命令会打印 workspace 名称可用-s静默。实现yarn init --install version初始化时直接安装指定版本的 Yarn与 1.22.0 的-2标志共用同一实现路径。1.19 系列缓存升级与 PnP 细节修复1.19.2安装行为与脚本运行修正类似.cache的文件夹不再在每次 install 后被从node_modules中清理。修复 workspace 子依赖未符号链接到根目录时的安装问题。修复 Node 13 下 PlugnPlay 环境运行脚本的问题。run命令改为同时检查 cwd 与node_modules/.bin修复在 workspace 中运行命令的问题。1.19.1路径计算、sha512 缓存与 Node 二进制选择--modules-folder及相关路径改为基于 cwd 计算。即使服务器未提供 sha512也会将 sha512 存入缓存。使用yarn-path时选用正确的 Node 二进制。1.19.0构建产物漏洞修复修复了一个关于构建产物存储方式的潜在安全漏洞由 ChALkeR 报告Maël Nison 修复。1.18.0PnP 引导、link 协议与注册表安全对 PnP 项目提示使用 Yarn 2 开发主干。yarn create时保留已链接的包。修复使用 Verdaccio 时离线镜像文件名的计算问题。修复link:.引用包文件夹的问题。即使NODE_ENVproductiongit 依赖也会运行prepare生命周期脚本。修复--no-git-tag-version时postversion生命周期不被调用的问题。忽略 package.json 中体积过大的 vscode 配置键避免 E2BIG 错误。强制 Yarn 与 npm 注册表使用 https。支持从 Yarn 2 生成的.yarnrc.yml中读取yarnPath。1.17.0version 预发布、audit 与 YAML 容忍yarn version增加预发布标志与预发布标识符。修复yarn add/yarn upgrade配合 audit 使用时的问题。yarn global add支持--offline标志。Yarn 在解析阶段开始容忍 YAML完整支持留待下个大版本。修复link:协议指向不含 package.json 的文件夹时的 bug。1.16.0audit 过滤与下载重试yarn install遇到 ETIMEDOUT 时自动重试下载。实现yarn audit --level [severity]按严重级别过滤审计输出。源码实现见 src/cli/commands/audit.js可选值依次为info|low|moderate|high|critical默认inforeport()中通过severityLevels.indexOf(...) startLoggingAt判断是否输出某条公告。实现yarn audit --groups group_name [group_name ...]只审计指定依赖组的依赖默认值为全部自有依赖类型dependencies、devDependencies、optionalDependencies、peerDependencies。yarn create生成的进程可访问脚本环境变量。阻止打印 EPIPE 错误。支持 npm enterprise URL 参与离线镜像文件名计算。调整 lockfile 解析器逻辑解析更多边界情况。1.15 系列run 退出码、环境变量与 PnP 细节1.15.2run 退出码与 audit 报告回退导致 PowerShell 与yarn global交互异常的变更。修复yarn run中非零退出码被统一转换为 1 的问题——现在会保留原始退出码。修复yarn audit的生产/开发依赖报告。1.15.0脚本环境、policies 与 PnP 修复移除--scripts-prepend-node-pathYarn 默认行为已使其过时。修复yarn audit打印的 advisory 链接。支持带下划线前缀的npm_config_环境变量解析如_auth。修复依赖使用或范围符时upgrade --latest的问题。yarn check现在尊重--modules-folder。支持从.yarnrc文件设置global-folder。yarn version可通过 ctrl-c 或空字符串取消。支持yarn policies set-version berry源码见 src/cli/commands/policies.js会从 Yarn 2 仓库下载 berry bundle 并写入.yarnrc.yml。修复upgrade --scope配合 github 依赖的问题。修复 win32 PnP 检查中盘符大小写不匹配问题。修复非 HTTP 网络错误如证书无效的报错信息。--require ./.pnp.js在NODE_OPTIONS中的位置调整到最前面。ignore-scripts设置在 yarnrc 中时包不再被自动 unplug。默认在 Terminus 终端显示 Emoji。运行run脚本前先执行 engines 检查。1.14.0PnP 兼容与 pack/unlink 修复提升 PnP 与 Node 6 的兼容性。修复 workspace 下的 PnP 检测installConfig现在从顶层读取。修复yarn pack与 bundled 依赖的交互问题。yarn policies set-version支持GITHUB_TOKEN环境变量。源码见 src/cli/commands/policies.jstoken 会作为access_token参数附加到 GitHub Releases API 请求中。修复resolve向 PnP hook 传递不完整 basedir 的问题。yarn unlink推荐的后续命令改为yarn install --force。修复engines缺失时os/platform需求未正确检查的问题。1.13.0peerDependenciesMeta 与版本策略命令实现peerDependenciesMeta字段允许在 package.json 中标记 peer 依赖的元信息。为peerDependenciesMeta增加optional选项设置为{optional: true}可静默缺失 peer 依赖的警告。实现yarn policies set-version [range]按 semver 范围解析并切换 Yarn 版本支持latest、rc、nightly、berry等特殊取值。核心逻辑见 src/cli/commands/policies.js先通过 GitHub Releases API 拉取发布列表按 semver 排序筛选满足范围的版本下载 bundle 到.yarn/releases/yarn-version.cjs再写入.yarnrc1.x或.yarnrc.yml2.x。修复包main入口无效时的解析问题。减小生成的$PATH环境变量体积改善 Windows 支持。修复第三方包 postinstall 脚本引用自身依赖中二进制的问题。修复 yarn audit 退出码溢出。--ignore-scripts下不再自动 unplug 带 postinstall 脚本的包。为 PlugnPlay 提供resolve包的透明支持。npm 注册表返回 500 时正确报告错误码。1.12 系列audit 诞生与 PnP 基础设施成型1.12.3缓存升级与 PnP 挂钩方式变革修复 workspace 下yarn audit的问题。改用NODE_OPTIONS指示 Node 加载 PnP hook替代原始 CLI 参数注意cwd 含空格的 PnP 用户可能受影响。修复 Gulp 在 PlugnPlay 下的运行问题。修复根包缺 name、依赖空范围时yarn audit的问题。修复 Windows 下缓存 symlink 的设置问题。升级inquirer修复 Node 10 Windows 下upgrade-interactive的问题。通过require.resolve(pnpapi)暴露 PnP 文件路径。1.12.1环境变量与注册表认证upgrade-interactive展示 UI 前先执行引擎检查。降级cli-table3恢复 Node v4 支持。修复损坏 lockfile未终止字符串导致的死循环。环境变量必须“以YARN_开头”才被考虑此前只需包含。修复resolveRequest的extensions选项。修复 package.json 中bin空字符串条目的处理。支持带路径的注册表如 artifactory的基本认证。为 publish 等命令增加 2FA 支持。files属性的解释与 npm 对齐。修复 Darwin 上 yarn 二进制被 symlink 时的调用问题。修复require.resolve配合paths选项的问题。1.12.0yarn audit 与 PnP Windows 支持PnP 的 Windows 初始支持。新增yarn audit命令及所有 install 的--audit标志。核心实现在 src/cli/commands/audit.js将当前依赖树 gzip 后 POST 到 npm 安全审计接口按严重级别累加退出码info1、low2、moderate4、high8、critical16支持--summary仅打印摘要。为 ESLint 兼容增加临时 PnP 特殊逻辑。PnP hook 注入process.versions.pnp变量等于VERSIONS.std。默认禁用integrity字段的自动迁移可配置2.0 会重新启用。修复 npm 注册表返回损坏数据时故障包显示名错误的问题。修复yarn outdated在注册表未返回latesttag 时的崩溃。修复yarn run配合 workspaces 与 PnP 的问题。修复 peer 依赖多层解析的边界情况。从源码看 Yarn 1.x 的关键实现版本切换policies set-version 的完整链路yarn policies set-version是 1.x 末期最重要的命令之一其完整实现位于 src/cli/commands/policies.js。执行流程如下解析范围参数默认latest等价*rc会临时允许预发布nightly直达 nightly bundleberry或v2/2切换到 Yarn 2 的 berry bundle。通过 GitHub Releases API 拉取发布列表支持GITHUB_TOKEN认证过滤 draft 与 prerelease按 semver 降序排序。寻找满足范围的发布版本下载其yarn-version.jsbundle。写入.yarn/releases/yarn-version.cjs1.22.5 起为.cjs扩展名。1.x 写入.yarnrc的yarn-path切换到 Yarn 2berry时写入.yarnrc.yml的yarnPath字段相对路径。yarn init -2正是复用了这条链路从 src/cli/commands/init.js 可以看到-2标志实际触发policies set-version berry再继续标准的交互式初始化流程。安全审计yarn audit 的数据流yarn audit1.12.0 引入在 src/cli/commands/audit.js 中实现构建审计树从hoisted-tree-builder生成提升后的依赖树结合getTransitiveDevDependencies标记传递开发依赖。gzip 压缩审计树后 POST 到${registry}/-/npm/v1/security/audits。返回的metadata.vulnerabilities按严重级别累加为退出码便于 CI 中按级别门禁。--groups控制审计哪些依赖组默认覆盖所有自有依赖类型--level控制输出的最低严重级别。打包yarn pack 的文件过滤yarn pack在 src/cli/commands/pack.js 中通过sortFilter、ignoreLinesToRegex、filterOverridenGitignores等工具完成文件过滤与排序并使用sort: true保证打包顺序确定这解释了 1.22.5 中“跨平台一致布局”的修复来源。升级到 Yarn 2/3 的注意事项从 CHANGELOG 可以看出Yarn 1.x 末期版本已经为迁移做了大量铺垫1.18.0起 Yarn 1.x 可读取 Yarn 2 生成的.yarnrc.yml中的yarnPath1.22.0起yarn init -2与yarn set version可直接切换到 Yarn 2 项目1.22.5 / 1.22.6持续打磨.cjs格式、输出清理与 Corepack 兼容1.22.11确保 Corepack 环境下yarn init -2可用。但 Yarn 1.x 分支已冻结官方推荐直接切换到 Yarn 3.0迁移时如遇问题可参考官方迁移指南。对于仍在使用 1.x 的存量项目建议至少升级到 1.22.11以获取 SIGTERM 转发修复与 Corepack 兼容性。参考来源本文核心内容全部继承自仓库根目录的 CHANGELOG.md覆盖 1.12.0~1.22.11 全部条目。实现证据来源yarn policies set-version/set version→ src/cli/commands/policies.jsyarn init -2→ src/cli/commands/init.jsyarn audit→ src/cli/commands/audit.jsyarn pack忽略.yarnrc.yml→ src/cli/commands/pack.js。赞分享开发工具CLI【免费下载链接】yarnThe 1.x line is frozen - features and bugfixes now happen on https://github.com/yarnpkg/berry项目地址https://gitcode.com/gh_mirrors/ya/yarn点击查看免费下载相关推荐Jekyll 版本演进全览从 0.0.0 到 4.4.x 的关键特性、架构变革与迁移指南Jekyll 版本演进全览从 0.0.0 到 4.4.x 的关键特性、架构变革与迁移指南 Jekyll 是一款以 Ruby 编写的博客感知静态站点生成器前端CMSAngularFire 1.x 到 2.x 迁移指南关键变更与升级策略AngularFire 1.x 到 2.x 迁移指南关键变更与升级策略 前言为什么需要迁移 还在为 AngularFire 1.x 到 2.x 的迁移而头前端NVD3版本迁移手册从1.7.x到1.8.6的关键变更NVD3版本迁移手册从1.7.x到1.8.6的关键变更 NVD3作为基于D3.js的可复用图表库从1.7.x到1.8.6版本的迭代包含多项重要变更涉及AP数据可视化前端上一篇怎样高效清理Mac系统专业开发者的Mole实用指南下一篇FS25_AutoDrive终极指南如何实现《模拟农场25》全自动农业管理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考