升级Node.js 8后npm install/uninstall异常触发全量依赖安装问题
解决npm 5.6.0执行单包操作时自动安装所有缺失依赖的问题
这个问题我之前在npm 5.x版本也碰到过,本质是npm 5引入的一项默认行为:它会自动让node_modules目录的依赖状态与package.json保持一致。也就是说,只要node_modules里存在package.json中声明但未安装的依赖,哪怕你只是针对单个包执行npm install或npm uninstall,且没有添加--save类参数,npm都会自动补全安装所有缺失的依赖项。
下面是几个可行的解决方案:
临时针对单次操作禁用自动同步
在执行安装或卸载命令时添加--no-save参数,这个参数会告诉npm不要修改package.json和package-lock.json,同时也会阻止它自动同步所有依赖:- 卸载单个包:
npm uninstall <package-name> --no-save - 安装单个包:
npm install <package-name> --no-save
- 卸载单个包:
全局/项目级禁用默认同步行为
如果你需要长期避免这种自动同步,可以修改npm配置:- 全局生效(影响所有项目):执行
npm config set save false - 仅当前项目生效:在项目目录下执行
npm config set save false --local
配置生效后,默认执行npm安装/卸载操作时就不会自动同步依赖,也不会修改package.json了。
- 全局生效(影响所有项目):执行
临时移除package-lock.json(不推荐长期使用)
如果你只是临时处理,可以先删除项目根目录的package-lock.json文件,再执行单包操作。不过这个方法会破坏依赖版本锁定,可能导致后续安装的依赖版本不一致,所以只建议临时应急使用。
内容的提问来源于stack exchange,提问作者Leonardo
相关产品推荐
相关产品推荐

