npm經常使用命令及版本號淺析

npm 包管理器的經常使用命令
測試環境爲node>=8.1.3&&npm>=5.0.3vue

1, 首先是安裝命令node

//全局安裝
 npm install 模塊名 -g
 //本地安裝
 npm install 模塊名
 //一次性安裝多個
 npm install 模塊1 模塊2 模塊3 
 //安裝開發時依賴包
 npm install 模塊名 --save-dev
 //安裝運行時依賴包
 npm install 模塊名 --save

2, 查看安裝的目錄react

//查看項目中模塊所在的目錄
 npm root
 //查看全局安裝的模塊所在目錄
 npm root -g

3, 查看npm的全部命令命令git

npm help

4,查看某個包的各類屬性npm

//查看某個包對於各類包的依賴關係
 npm view 模塊名 dependencies

5,查看包的源文件地址json

//查看包的源文件地址
 npm view 模塊名 repository.url

6,查看當前模塊依賴的node最低版本號緩存

npm view 模塊名 engines
查看模塊的當前版本號
 npm view 模塊名 version
 //須要注意的是查看到的模塊版本是該模塊再遠程倉庫的版本號,並非當前項目中所依賴的版本號。
 //查看當前項目中應用的某個模塊的版本號的命令爲
 npm list 模塊名 version
查看模塊的歷史版本和當前版本
 npm view 模塊名 versions
查看一個模塊的全部信息
 npm view 模塊名

7,查看npm使用的全部文件夾服務器

npm help folders

8,用於更改包內容後進行重建測試

npm rebuild 模塊名

9,檢查包是否已通過時ui

//此命令會列出全部已通過時的包,能夠及時進行包的更新
 npm outdated

10,更新node模塊

npm update 模塊名
 //固然你也能夠update 該模塊到指定版本
 npm update 模塊名 @版本號
 //若是安裝到最新版本可使用如下命令
 npm install 模塊名@latest 

 //若是當前的版本號爲2.5.1,是沒辦法進行npm update 模塊名 @2.3.1 將模塊版本號變爲2.3.1的,固然,你能夠先uninstall,而後進行install @2.3.1

11,卸載node模塊

npm uninstall 模塊名

12,訪問package.json的字段文檔

npm help json

13,發佈一個npm包的時候,須要檢驗某個包名是否已經存在

npm search 模塊名

14,npm init:引導你建立一個package.json文件,包括名稱、版本、做者這些信息

清除npm的緩存
 npm cache clean
 //慎重使用改命令

15, npm root 查看當前包的安裝路徑,

npm root -g 查看全局的包的安裝路徑

16,npm -v 查看npm的版本

npm -v

17,查看某個模塊的bugs列表界面

npm bugs 模塊名
 //例如運行npm bugs chai則會打開vue倉庫的issue,效果以下圖
npm bugs

18,打開某個模塊的倉庫界面

npm repo 模塊名
 //例如運行npm repo vue則會打開vue線上倉庫,效果以下圖
npm bugs

打開某個模塊的文檔
 npm docs 模塊名
 //例如運行npm docs vue則會打開vue的readme.md文檔
打開某個模塊的主頁
 npm home 模塊名
 //例如運行npm home vue則會打開vue模塊的主頁
查看當前已經安裝的模塊
 npm list
 //固然咱們也能夠限制輸入的模塊層級,例如
 npm list --depth=0
npm list

清除未被使用到的模塊

//有時在咱們使用npm list的時候,可能會碰到一些問題,就是有些模塊並無被項目引用使用,咱們仍是安裝了這些模塊,那麼咱們能夠一鍵清除這些沒有使用到的模塊
 npm prune

版本控制

咱們使用node開發時,常常須要依賴一些模塊,咱們進行了下載以後,便一直在該版本的模塊環境下進行開發,可是線上的服務器通常都是根據依賴來配置文件,從新下載各個模塊,可是保不齊某個模塊的版本已經更新了,這時線上的包會更新到最新的版本,但你的代碼仍是依據老版原本寫的,這時可能會產生一些不知名的Bug,

首先看npm包的版本號的格式X.Y.Z,版本好的格式遵循semver 2.0規範,其中X爲主版本號,只有更新了不向下兼容的API時進行修改主版本號,Y爲次版本號,當模塊增長了向下兼容的功能時進行修改,Z爲修訂版本號,當模塊進行了向下兼容的bug修改後進行修改,這就是「語義化的版本控制」。

默認狀況下,當用--save或者--save-dev安裝一個模塊時,npm經過脫字符(^)來限定所安裝模塊的主版本號,而該脫字符對於不一樣的版本號有不一樣的更新機制

^1.2.1 表明的更新版本範圍爲 >=1.2.1 && < 2.0.0
^0.2.1 表明的更新版本範圍爲 >=0.2.1 && < 0.3.0
^0.0.2 表明的更新版本範圍爲 0.0.2(至關於鎖定爲了0.0.2版本)

波浪號(~)是限定模塊的次要版本,(如下規則測試方法同上,便不一 一測試)

~1.5.1容許安裝版本號大於1.5.1但小於1.6.0版本的模塊
~0.5.1容許安裝版本號爲0.6.0
當主版本號/次版本號/修訂版本號爲X or x or *時,那麼update或install是會下載該分支最新的版本號

(*)跟新或安裝模塊時會安裝>=0.0.0的最新版本
1.x 表示的更新範圍爲>=1.0.0&&< 2.0.0
1.2.x 表示的更新範圍爲>=1.2.0&&< 1.3.0
更多版本規範

1,固然咱們也能夠把項目依賴的包固定在某一個版本,強制你們安裝相同的依賴樹,以下所示:

npm install react --save -E
 //此命令會將react的版本號進行固定,可是該方式只能控制項目中直接依賴的包的版本,沒法控制項目模塊中依賴的包的版本號,因此這種方式也沒法讓不一樣的使用者獲得相同的依賴樹。

2,此外咱們還可使用npm shrinkwrap,能夠將項目中的模塊版本進行精確鎖定:

這時候只須要運行命令 npm shrinkwrap,便會產生一個npm-shrinkwrap.json文件,這個文件保存了全部當前使用的依賴模塊的版本:把該文件提交到git倉庫中,這樣其餘人在clone你的項目的時候,執行npm install命令時,npm檢測到該文件中的信息會完整的還原出徹底相同的依賴樹,具體的使用方法以下:

npm install --save-dev react //安裝react
npm prune    //清除未被使用的模塊
npm shrinkwrap
可是使用這種方法,安裝一個模塊包的方式比較繁瑣。

3,使用yarn咱們也能夠獲得模塊包精確控制的結果

yarn是一個與npm兼容的node包管理器,使用它安裝npm包,會自動在項目目錄建立一個yarn.lock文件,該文件包含了當前項目中所安裝的依賴包的版本信息,其餘人在使用yarn安裝項目的依賴包時就能夠經過該文件建立一個徹底相同的依賴環境。

使用方法以下:

 yarn init  //使用yarn建立一個項目
 yarn add 模塊名  //使用yarn 安裝一個包
 //還有不少yarn命令
此外,yarn除了能夠自動幫咱們鎖定依賴包的版本,yarn還在本地緩存已經安裝過的包,當再次安裝時,直接從本地讀取便可。安裝速度獲得大大提高。但yarn的使用須要整個團隊都去使用,仍是有必定的成本的。

綜上所述,目前大多數項目中較爲簡單的使用規範,在項目中依賴各個模塊時,對於主版本號和次版本號都爲0的不穩定的項目,咱們可使用精確版本(exact),對於主版本號爲0次版本號不爲0的模塊和主版本號不爲0的模塊,使用caret Range即脫字符(^)來控制版本。固然,咱們也能夠對項目依賴模塊的版本進行精確鎖定。

SemVer(Semantic Versioning) 2.0.0
SemVer是一個對npm包版本進行規範的模塊,它對於npm包的版本號有着一系列的規則,如下爲摘抄自SemVer 2.0.0中的規則:

在版本控制環節咱們已經說過了,模塊的版本號採用X.Y.Z的格式,且都必須爲非負的正整數,依次爲主版本號、次版本號,修改版本號。
當規定版本的模塊進行發佈以後,對於該模塊的任何修改,都必須發佈新版本。
主版本號爲0.X.Y的模塊處於開發階段,模塊並不穩定。
主版本號在有不向下兼容的API發佈時必須修改,在主版本號遞增時,次版本號和修訂版本號必須從新歸零。
次版本號再有向下兼容的API發佈時進行遞增修改,在模塊中有API被棄用時也必須遞增次版本號,當此版本號遞增改變時,修訂版本號Z必須歸零。
版本的優先級就是各個版本的排序規則,判斷版本優先級時,必須把版本號從左至右分爲主版本號、此版本號、修訂版本號、以及先行版本號來進行比較
相關文章
相關標籤/搜索