笔者在最近碰到一个问题:
有一些项目没有类似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包版本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
标签:锡林郭勒盟 鄂尔多斯 莆田 丹东 遵义 襄阳 哈尔滨 双鸭山
巨人网络通讯声明:本文标题《小项目中管理npm包版本的思路与方法》,本文关键词 小项,目中,管理,npm,包版本,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。