美文网首页
公共npm包的自动检测更新

公共npm包的自动检测更新

作者: cd2001cjm | 来源:发表于2021-03-31 10:28 被阅读0次

    当前我们有个问题,npm包更新后,可能业务部门感知不到,升级有延迟。
    为了解决该问题,可参考如下步骤:

    1. npm install npm-check-updates
    2. 在pacage.json中,做如下变更:覆盖即可
      "scripts": {
      "checkv": "node .\checkUpdate.js",
      "dev": "set NODE_ENV=development && npm run checkv && YYYY",
      },

    xxxx是用正则匹配出想检测更新的业务npm名称规则
    YYYY是其他命令

    脚本如下:

    const ncu = require('npm-check-updates');
    const chalk = require('chalk');
    const execa = require('execa');
    const ora = require('ora');
    
    function install(packages) {
    
        const installer = 'npm' 
        const color = chalk.supportsColor ? '--color=always' : null;
    
        const npmArgs = ['install']
    
            .concat(packages)
            .concat(color)
            .filter(Boolean);
    
        console.log('');
        console.log(`$ ${chalk.green(installer)} ${chalk.green(npmArgs.join(' '))}`);
        const spinner = ora(`Installing using ${chalk.green(installer)}...`);
        spinner.enabled = true
        spinner.start();
    
        return execa(installer, npmArgs, {}).then(output => {
            spinner.stop();
            console.log(output.stdout);
            console.log(output.stderr);
    
           // return currentState;
        }).catch(err => {
            spinner.stop();
            throw err;
        });
    }
    
    ncu.run({
      upgrade:true,
      filter:"/^@teld/.*$/"
    }).then(function(upgraded){
        let udpateList =[]
        for(var npmName in upgraded){
          var npmVersion = upgraded[npmName].substring(1)
          var installAgrs = npmName+'@'+npmVersion
          udpateList.push(installAgrs)
          
        }
        if(udpateList.length > 0)install(udpateList)     
    })
    

    相关文章

      网友评论

          本文标题:公共npm包的自动检测更新

          本文链接:https://www.haomeiwen.com/subject/ievsrktx.html