手动配置npm下载包

50 阅读1分钟

最近遇到了在react的项目中,由于一些不可抗力需要给react版本降级,这导致了很多依赖包无法兼容,且react在安装时,会优先安装最新版本,再跳了很多坑后,学到了手动配置npm包管理,在此做个记录。 首先在根目录创建check-deps.js文件,需要通过node.js的child-process模块引入一个方法execSync,child-process的作用是创建和管理子进程,它允许我们在nodejs中执行系统命令,我们后续的npm install就需要依靠它来完成。exec是异步执行,这里使用execSync。 const {execSync} = require('child-process') const dependencies = [ 'react@16.14.0', 'react-dom@16.14.0' ] 这里只做示例,包的种类和版本可以自行添加,我就不过多赘述了。 dependencies.forEach(dep=>{ try{ execSync(npm list ${dep},{stdio:'ignore'}) console.log(${dep}已安装) } catch{ console.log(${dep}安装中) execSync(npm install ${dep},{stdio:'inherit'}) } }) 此处的npm list就是查询依赖包的安装信息,执行同步命令后会返回缓冲区的信息,这样就可以手动控制依赖包安装的版本。 最后在package.json文件的script对象里,加一行命令“safe-install”: "node check-deps.js" 终端运行npm run safe-install即可实现手动配置,满足不再安装已安装了特定版本的依赖包,解决批量install的时候的版本问题