pinset
EN
工具管理

pinset import

把项目已有的版本声明迁入 Pinset,先查看计划,再确认写入配置和锁文件。

在 GitHub 查看源文档 ↗

什么时候用

项目正在使用 .tool-versions、.nvmrc 等文件时使用。已有 Pinset 选择只补缺失项;主动更换版本用 use。

示例

假设项目根目录的 .nvmrc 声明 Node 24:

pinset import --plan
pinset import
pinset install

计划显示声明及来源、确切版本、保留项、冲突和不能导入的工具。第二条确认后写入配置和锁;第三条才安装工具。

行为细节

检查项目根目录的 .tool-versions、package.json(engines、volta、packageManager)、.nvmrc、.node-version、go.mod、rust-toolchain.toml、.python-version。已有项目采用发现的项目根目录,新项目使用指定目录。保留来源文件。

范围和别名通过 Provider 元数据解析为确切版本并标注。同一工具的兼容声明共同约束结果,不兼容声明跳过。go.mod 优先 toolchain 并检查 go 最低要求。Rust 同时迁移 profile、components、targets,并保留 nightly 的固定日期;本地路径和未指定的默认 channel 无法推断。npm、pip、独立 Dart 无独立 Provider;pnpm 缺少项目 Node 选择时无法导入。已声明的通用工具只接受明确版本或 tag。

已有选择和有效锁始终保留;缺锁时按已有 selector 补锁。解析可能联网;通用工具预览下载到临时文件计算摘要。--plan 不写项目或 Pinset 状态。输入 y、yes 或“是”才写入,回车取消。审阅期间来源、配置或锁变化会要求重新生成计划。

字段映射、npm 限制、PATH 对照和回退步骤见从 Volta 迁移项目。volta.extends 会被忽略,不会追踪引用。

参数、退出码与常见错误

参数含义
--plan只显示计划。
-y, --yes显示计划后直接确认。
--json不带 --yes 时只输出计划;写入时计划到 stderr,结果到 stdout。

成功或取消返回 0。无来源返回 1(PINSET_IMPORT_NO_SOURCES)并列出检查文件;格式错误为 PINSET_IMPORT_SOURCE_INVALID;计划失效为 PINSET_IMPORT_PLAN_STALE,需重新运行。计划内跳过项需要审阅,不代表整体操作失败。

/docs/commands/import适用版本 · Pinset 3.1.0