• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    小项目中管理npm包版本的思路与方法

    背景

    笔者在最近碰到一个问题:

    有一些项目没有类似jenkins的自动部署平台,前端部署都是本地执行npm run build命令生成压缩包,然后放到服务器上面,解压到nginx 目录, 但是有的时候遇到一个问题,比如项目中某个成员升级了其他组写的一个组件packageA,但是其他成员可能没有升级,导致上线后就会有一些问题,一个包还好,如果有好几个包都没有升级,那么可能导致一些意想不到的问题。

    思路

    首先就这个问题,我思考后有以下几个问题

    解决

    问题1

    针对第一个问题解决方案就是 直接用x.x.x的方式,一个包的更新必定是至少有一个人知道这个事情才会去更新包,所以包名是可以不带任何标识的

    问题2

    针对第二个问题

    node_modules中的版本是低的,但是package.json的版本是最新的,所以我们可以自定一个脚本判断两个版本是否一致

    const path = require('path');
    const projectRoot = process.cwd();
    const projectPack = require(path.resolve(projectRoot, 'package.json'));
    // 需要对比的包名
    const modules = ['element-ui'];
    const allDependencies = {
      ...(projectPack.dependencies || {}),
      ...(projectPack.devDependencies || {}),
    };
    
    modules.forEach(module => {
      try {
        const packVersion = allDependencies[module];
        // 有一些包名是有文件夹的比如@vue/cli-service,是在@vue文件夹下
        const realPath = packVersion.aplit('/');
        const pack = require(path.resolve(
          ...[projectRoot, 'node_modules', ...realPath, 'package.json'],
        ));
        const needVersions = packVersion.match(/\d+/g);
        const realVersions = pack.version.match(/\d+/g);
        for (const i in needVersions) {
          if (
            isDef(needVersions[i]) 
            isDef(realVersions[i]) 
            parseInt(realVersions[i])  parseInt(needVersions[i])
          ) {
            exit(module);
          }
        }
      } catch (error) {
        exit(module);
      }
    });
    
    function exit(moduleName) {
      throw new Error(`${moduleName} 版本过低,请执行 npm i/npm install`);
    }
    function isDef(num) {
      return num !== null  num !== undefined;
    }
    
    

    package.json改造 增加check 脚本

     "scripts": {
        "check": "node build/checkNpmPackageVersion.js",
        "dev": "npm run check  vue-cli-service serve",
        "build": "npm run check  vue-cli-service build",
        "lint": "vue-cli-service lint"
      },
    

    不足

    总结

    到此这篇关于小项目中管理npm包版本的思路与方法的文章就介绍到这了,更多相关小项目管理npm包版本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    上一篇:IDEA/WebStorm/Pycharm鼠标滚轮ctrl+滚轮-调节缩放字体大小
    下一篇:手把手教你学会HBuilder打包APP
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    小项目中管理npm包版本的思路与方法 小项,目中,管理,npm,包版本,