项目全局安装包

124 阅读1分钟

        有个项目需要全局安装一个包(要使用命令),考虑到要使用自动化部署,又不想直接在服务器上操作安装,所以在代码中进行全局安装。大体思路是利用preinstall在安装依赖前进行全局检查有没有需要的那个全局包,没有就安装。具体代码如下:

package.json:

{  "name": "ant-design-pro",  "scripts": {    "preinstall": "node ./scripts/preinstall.js",  }}

preinstall.js:

const { exec } = require('child_process');// exec('npm ls -g @sentry/cli', function (...arg) {//     console.log(arg, 'arg')// });exec('npm ls -g', function (_, packages) {    console.log(packages, 'arg')    if (packages?.includes('@sentry/cli')) {        console.log('有')    } else {        exec('npm i -g @sentry/cli');        console.log('没有')    }});

参考文章:

认识node:zhuanlan.zhihu.com/p/441973029

child_process:blog.51cto.com/u_15283585/…

exec同步异步:blog.csdn.net/woyebuzhida…