当前位置: 首页 > Web前端 > JavaScript

锁定项目Node版本和包管理器

时间:2023-03-27 00:30:28 JavaScript

与工具(代码)相比,文档和通信的约束要少得多。开发环境Node.jsPackageManager(npm,yarn,pnpm)痛点会员机Node.js版本不统一:12.x老派,14.x保守,17.x激进。项目能不能正常运行,就看天意了。在没有CICD流水线支持本地npmrunbuild的场景下,上线风险可想而知。有的人习惯用npm,有的人习惯用yarn。在代码库中经常会出现package-lock.json和yarn.lock文件同时存在的情况。更痛苦的一点是没有任何线索可以解决各种奇怪的问题。我们要做的是从源头上扼杀问题:锁定Node.js版本和包管理器锁定项目Node版本通过在package.json中指定engines字段,可以限制项目使用的node版本.以下配置只允许用户使用14或16版本,更多配置请参考package.json|npmDocs,semver//package.json"engines":{"node":"14.x||16.x"},配置后会发现这个字段只对yarn生效。那么它是如何为npm工作的呢?在项目根目录的.npmrc文件中添加如下配置//.npmrcengine-strict=true以上配置完成后,尝试npminstall,错误的Node.js会直接退出锁定的包管理器,使用only-让toolkit,npmscripts快速实现锁定。第一步:项目中npminstall-Donly-allow第二步:在package.json文件中配置scripts.preinstall,允许输入值only-allownpm,only-allowpnpm,only-allowyarn//包.json"scripts":{"preinstall":"npxonly-allownpm",...}以上配置完成后,就可以随便使用了(yarn,npm,pnpm)试试