monorepo项目运行npx tsc触发非目标命令报错如何修复
monorepo场景tsc命令报错修复方案
报错根因
公共npm源中名为tsc的包已被弃用,执行npx tsc时若本地未预先安装typescript依赖,npx会优先拉取该废弃包,触发如下报错:
This is not the tsc command you are looking for
修复方案(按推荐优先级排序)
方案1:monorepo场景首推
- 在monorepo根目录安装
typescript作为公共开发依赖,所有子包复用根目录的tsc命令,避免多包重复安装和版本不一致问题 - 将所有子包
package.json的build脚本中npx tsc直接替换为tsc即可。npm/yarn/pnpm执行package.json的scripts字段时,会自动识别项目内node_modules/.bin下的可执行文件,不需要额外加npx前缀,也不会触发拉取远程废弃包的逻辑。
调整后脚本示例:
"scripts": { "build": "rm -rf lib/ && tsc && cp -R src/assets/ lib/assets/", }
方案2:无需调整依赖结构直接替换命令
如果不想改动依赖安装逻辑,直接把所有脚本中的npx tsc替换为npx typescript即可,typescript包自带的二进制命令会正常执行编译逻辑,不会命中废弃的tsc包。
方案3:临时规避npx拉取远程包
如果所有子包已经单独安装了typescript依赖,不想改动命令核心逻辑,可将npx tsc调整为npx --no-install tsc,强制npx只使用本地已安装的tsc命令,找不到就直接报错不会拉取远程废弃包。
内容的提问来源于stack exchange,提问作者Reacting
相关产品推荐
相关产品推荐

