如何在npm install时排除单个包?Typescript排除失败求助
解决npm install无法排除typescript包的问题
以下是针对你遇到的问题的几种可行解决方案:
调整typescript的依赖类型
如果typescript仅用于开发环境,把它从package.json的dependencies移到devDependencies字段中:{ "devDependencies": { "typescript": "^3.8.1" } }之后执行
npm install --only=prod,npm会自动跳过所有开发依赖,包括typescript。检查npm版本兼容性
--omit参数是npm 7及以上版本才支持的特性,如果你的CI环境使用的是npm 6或更低版本,这个参数不会生效。先执行npm -v确认版本:- 若版本低于7,可升级npm到最新稳定版;
- 或使用npm 6的替代方案:临时移除typescript再安装生产依赖,最后按需恢复:
# 临时移除typescript(不修改package.json) npm uninstall --no-save typescript # 安装生产依赖 npm install --production # 本地开发时恢复typescript依赖 npm install typescript@^3.8.1 --save-dev
处理间接依赖引入的typescript
如果typescript是其他生产依赖的间接依赖,--omit=typescript无法排除它(该参数仅对直接声明的依赖生效)。先执行npm ls typescript查看依赖树,定位是哪个包引入了typescript:- 若该间接依赖非必需,可替换为不依赖typescript的版本;
- 若必须保留,可在CI脚本中添加手动删除步骤:
npm install --only=prod rm -rf node_modules/typescript
正确使用npm 7+的参数组合
若你的npm版本在7以上,且typescript确实是直接声明在dependencies中,可直接执行:npm install --omit=dev --omit=typescript这里
--omit=dev等同于--only=prod,加上--omit=typescript可以排除直接声明的typescript依赖。
内容的提问来源于stack exchange,提问作者I'll-Be-Back
相关产品推荐
相关产品推荐

