首页前端开发其他前端知识小项目中管理npm包版本的思路与方法

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

时间2024-02-10 22:40:03发布访客分类其他前端知识浏览470
导读:收集整理的这篇文章主要介绍了小项目中管理npm包版本的思路与方法,觉得挺不错的,现在分享给大家,也给大家做个参考。 背景笔者在最近碰到一个问题:有一些项目没有类似jenkins的自动部署...
收集整理的这篇文章主要介绍了小项目中管理npm包版本的思路与方法,觉得挺不错的,现在分享给大家,也给大家做个参考。

背景

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

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

思路

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

  • package.json中的包名的版本有几个是用的^x.x.x的形式,不利于判断
  • 如何对比包的版本

解决

问题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"  }
    ,

不足

  • 如果包名不是纯数字的话对比有问题,因为我们公司的包名都不带alpha,beta等,所以我没有考虑
  • 有一些可以考虑和远程仓库对比,比如调npm info包名命令将结果对比

总结

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

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 小项目中管理npm包版本的思路与方法
本文地址: https://pptw.com/jishu/608971.html
手把手教你学会HBuilder打包APP VSCode使用ssh密钥免密远程登录服务器的方法

游客 回复需填写必要信息