欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

小項(xiàng)目中管理npm包版本的思路與方法

 更新時間:2021年06月08日 10:23:49   作者:Vincent就是我65724  
這篇文章主要給大家介紹了關(guān)于小項(xiàng)目中該如何管理npm包版本的思路與方法,npm包版本管理是非常重要的,文章通過示例代碼介紹的很詳細(xì),需要的朋友可以參考下

背景

筆者在最近碰到一個問題:

有一些項(xiàng)目沒有類似jenkins的自動部署平臺,前端部署都是本地執(zhí)行npm run build命令生成壓縮包,然后放到服務(wù)器上面,解壓到nginx 目錄, 但是有的時候遇到一個問題,比如項(xiàng)目中某個成員升級了其他組寫的一個組件packageA,但是其他成員可能沒有升級,導(dǎo)致上線后就會有一些問題,一個包還好,如果有好幾個包都沒有升級,那么可能導(dǎo)致一些意想不到的問題。

思路

首先就這個問題,我思考后有以下幾個問題

  • package.json中的包名的版本有幾個是用的^x.x.x的形式,不利于判斷
  • 如何對比包的版本

解決

問題1

針對第一個問題解決方案就是 直接用x.x.x的方式,一個包的更新必定是至少有一個人知道這個事情才會去更新包,所以包名是可以不帶任何標(biāo)識的

問題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} 版本過低,請執(zhí)行 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"
  },

不足

  • 如果包名不是純數(shù)字的話對比有問題,因?yàn)槲覀児镜陌疾粠lpha,beta等,所以我沒有考慮
  • 有一些可以考慮和遠(yuǎn)程倉庫對比,比如調(diào)npm info包名命令將結(jié)果對比

總結(jié)

到此這篇關(guān)于小項(xiàng)目中管理npm包版本的思路與方法的文章就介紹到這了,更多相關(guān)小項(xiàng)目管理npm包版本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • wkhtmltopdf 最好用Html轉(zhuǎn)pdf的工具

    wkhtmltopdf 最好用Html轉(zhuǎn)pdf的工具

    這篇文章主要介紹了wkhtmltopdf 最好用Html轉(zhuǎn)pdf的工具,需要的朋友可以參考下
    2017-09-09
  • 防止刪庫跑路及高級代碼投毒技巧

    防止刪庫跑路及高級代碼投毒技巧

    這篇文章主要為大家介紹了防止刪庫跑路及高級代碼投毒技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Git常用場景使用方法

    Git常用場景使用方法

    這篇文章主要介紹了Git常用場景使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • hexo博客開啟https的SSL?證書實(shí)現(xiàn)過程

    hexo博客開啟https的SSL?證書實(shí)現(xiàn)過程

    這篇文章主要為大家介紹了hexo?博客開啟https的SSL證書實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Git提交到錯誤分支如何解決

    Git提交到錯誤分支如何解決

    如果不慎將代碼提交至錯誤分支,可以通過以下步驟糾正:1.確認(rèn)當(dāng)前分支及提交記錄,2.切換至正確分支,若不存在則創(chuàng)建,3.使用cherry-pick或rebase方法將提交從錯誤分支轉(zhuǎn)移到正確分支,4.清理錯誤分支記錄,可以選擇重置或刪除錯誤提交
    2024-09-09
  • 解析動態(tài)代理jdk的Proxy與spring的CGlib(包括區(qū)別介紹)

    解析動態(tài)代理jdk的Proxy與spring的CGlib(包括區(qū)別介紹)

    Spring是Java程序員基本不可能繞開的一個框架,它的核心思想是IoC(控制反轉(zhuǎn))和AOP(面向切面編程)。本文重點(diǎn)給大家介紹動態(tài)代理jdk的Proxy與spring的CGlib,感興趣的朋友跟隨小編一起看看吧
    2022-01-01
  • 提高編程技能的11個建議

    提高編程技能的11個建議

    當(dāng)你不熟悉編程的時候,你可能會覺得無從下手,并且不知道如何運(yùn)用學(xué)到的知識。只要你通過了這一困難的學(xué)習(xí)階段,你就會發(fā)現(xiàn)一個全新的世界
    2014-08-08
  • Istio?訪問外部服務(wù)流量控制最常用的5個技巧示例

    Istio?訪問外部服務(wù)流量控制最常用的5個技巧示例

    這篇文章主要介紹了Istio訪問外部服務(wù)流量控制最常用5個技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 2020最新版vscode格式化代碼的詳細(xì)教程

    2020最新版vscode格式化代碼的詳細(xì)教程

    這篇文章主要介紹了2020最新版vscode格式化代碼的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 從web到內(nèi)網(wǎng)滲透的一次過程詳解

    從web到內(nèi)網(wǎng)滲透的一次過程詳解

    本文非常詳細(xì)的描述了一次從web到內(nèi)網(wǎng)滲透的一次過程,并對每一步過程做了詳細(xì)的圖文示例及解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09

最新評論