按 README「meta bundle 模型」安装 meta 包:
dsh plugin --profile web add github:omdsh-dev/dsh-toolkit
pnpm 报错:
ERR_PNPM_PREPARE_PACKAGE Failed to prepare git-hosted package fetched from
"https://codeload.github.com/omdsh-dev/dsh-toolkit/tar.gz/5d4628929...":
@deepseek-ai/dsh-toolkit@0.0.1 npm-install: `npm install`
npm error 404 Not Found - GET
https://registry.npmjs.org/@deepseek-ai/dsh-type-meta/-/dsh-type-meta-0.0.1-rc.1.tgz
根因 1:package-lock.json 过期残留
- 仓库提交的
package-lock.json 仍锁定 "@deepseek-ai/dsh-type-meta": "^0.0.1-rc.1"(以及 node_modules/@deepseek-ai/dsh-type-meta 条目);
- 但
package.json 已无此依赖(dependencies 为空,仅 TS 相关 devDependencies);
- 公共 npm registry 上
@deepseek-ai/dsh-type-meta 包元数据与其 tarball 均 404(已实测)。
pnpm 安装 git 依赖时会按仓库 packageManager 声明在检出目录执行 npm install
(pnpm preparePackage:installScriptName = \${pm}-install`,注入 ${pm} install`),
npm install 读取提交的过期 lockfile → 404 → prepare 失败 → 整体安装失败。
根因 2(更深):即使 lockfile 修复,git 直装仍不可用
- 本包为纯 TS 源码(
"private": true),main/exports 指向 lib/index.js;
- 仓库不提交
lib/(无预构建产物),且只有 prepack 脚本(npm run build:all),
没有 prepare 脚本——git 安装路径不会触发任何构建;
- 结论:git 直装成功后包内也没有
lib/index.js,DSH 挂载时无法加载。
对比:子包仓库(如 dsh-tool-csv)提交了 lib/index.js 且 lockfile 干净,
dsh plugin add github:omdsh-dev/dsh-tool-csv 正常可用,与 meta 包行为不一致。
建议修复(任选)
- 清理仓库根
package-lock.json 中的 dsh-type-meta 残留(或删除 lockfile,本包 devDeps 自包含,无需提交 lock);
- 让 git 直装可构建,二选一:
- 提交构建产物
lib/(与各子包仓库一致,最省事);或
- 增加
"prepare": "npm run build" 并在 prepare 前确保 devDeps 已安装;
- 在 README「meta bundle 模型」小节补充已知限制说明,或在修复前暂时移除该命令示例。
复现证据(均不依赖任何特定本机状态)
- 干净环境复现:全新空项目(
{"name":"clean-repro","private":true})执行
pnpm add github:omdsh-dev/dsh-toolkit → 完全相同的 ERR_PNPM_PREPARE_PACKAGE + 同一 404 + 同一 commit。
- 按 README 本地构建步骤复现:全新 clone(commit 5d46289,lockfile 原封不动)直接执行
npm install(README「构建与测试」的第一步,不涉及 pnpm)→ 同样 E404 于
@deepseek-ai/dsh-type-meta/-/dsh-type-meta-0.0.1-rc.1.tgz。
- 直接 HTTP 探测:
https://registry.npmjs.org/@deepseek-ai/dsh-type-meta(包元数据)
与其 0.0.1-rc.1 tarball 均返回 404;本机 npm/pnpm 均配置为公共 registry,无作用域重定向。
临时 workaround(README 的 npm pack tarball 路径,已验证可用)
git clone https://github.com/omdsh-dev/dsh-toolkit.git
cd dsh-toolkit
rm package-lock.json # 删除过期 lock
npm install # devDeps 自包含
npm run build # 或 bash scripts/build-all.sh(Windows 上需手动逐包 tsc)
npm pack --ignore-scripts # lib/ + 10 个子包全部入包
dsh plugin --profile web add <tarball 路径>
环境
- OS: Windows(PowerShell 5.1 / Git Bash 可用)
- Node: v24.14.1;pnpm: 10.9.0(dsh plugin 转发);npm: 11.x
- DSH: @deepseek-ai/dsh(npm 安装,profile: web)
按 README「meta bundle 模型」安装 meta 包:
pnpm 报错:
根因 1:package-lock.json 过期残留
package-lock.json仍锁定"@deepseek-ai/dsh-type-meta": "^0.0.1-rc.1"(以及node_modules/@deepseek-ai/dsh-type-meta条目);package.json已无此依赖(dependencies为空,仅 TS 相关 devDependencies);@deepseek-ai/dsh-type-meta包元数据与其 tarball 均 404(已实测)。pnpm 安装 git 依赖时会按仓库
packageManager声明在检出目录执行npm install(pnpm
preparePackage:installScriptName = \${pm}-install`,注入${pm} install`),npm install 读取提交的过期 lockfile → 404 → prepare 失败 → 整体安装失败。
根因 2(更深):即使 lockfile 修复,git 直装仍不可用
"private": true),main/exports指向lib/index.js;lib/(无预构建产物),且只有prepack脚本(npm run build:all),没有
prepare脚本——git 安装路径不会触发任何构建;lib/index.js,DSH 挂载时无法加载。对比:子包仓库(如 dsh-tool-csv)提交了
lib/index.js且 lockfile 干净,dsh plugin add github:omdsh-dev/dsh-tool-csv正常可用,与 meta 包行为不一致。建议修复(任选)
package-lock.json中的dsh-type-meta残留(或删除 lockfile,本包 devDeps 自包含,无需提交 lock);lib/(与各子包仓库一致,最省事);或"prepare": "npm run build"并在 prepare 前确保 devDeps 已安装;复现证据(均不依赖任何特定本机状态)
{"name":"clean-repro","private":true})执行pnpm add github:omdsh-dev/dsh-toolkit→ 完全相同的ERR_PNPM_PREPARE_PACKAGE+ 同一 404 + 同一 commit。npm install(README「构建与测试」的第一步,不涉及 pnpm)→ 同样E404于@deepseek-ai/dsh-type-meta/-/dsh-type-meta-0.0.1-rc.1.tgz。https://registry.npmjs.org/@deepseek-ai/dsh-type-meta(包元数据)与其 0.0.1-rc.1 tarball 均返回 404;本机 npm/pnpm 均配置为公共 registry,无作用域重定向。
临时 workaround(README 的 npm pack tarball 路径,已验证可用)
环境