npm常用命令總結及區別


1、npm是node.js的包管理工具

  • 每個版本號都形如1.2.3,由三個部分組成,依次叫做“主版本號”、“次版本號”和“修訂號”
  • 當新版本無法兼容基於前一版本的代碼時,則提高主版本號
  • 當新版本新增了功能與特性,但仍兼容前一版本的代碼時,則提高次版本號
  • 當新版本僅僅修正漏洞或者增強效率,仍然兼容前一版本代碼,則提高修訂號

      默認情況下,npm install --save下載的都是最新版本,並且會在package.json文件里登記一個最優版本號,其形式如下所示:

"dependencies": {
    "express": "^4.10.0",
    "ejs": "~2.3.2"
}    

 

2、本地安裝優於全局安裝

npm安裝依賴包時有兩種模式:本地安裝或者全局安裝。本地安裝表示該依賴包會被下載到當前項目的node_modules文件夾里,而全局變量則會把它安裝到系統級別的目錄里。比如用npm install -g typescript全局安裝typescript這個包后,我們就可以在系統的任何位置使用tsc命令來編譯TypeScript文件。這本身沒有什么錯,有些Node包的命令確實需要在任何位置都能使用,但全局安裝依賴包也有隱患:使用你的應用的用戶如果沒有全局安裝typescript怎么辦?或者如果她所安裝的版本不兼容怎么辦?

所以,安裝依賴包最好遵循以下實踐:

  1. 盡量不全局安裝依賴包,除非是typescript,grunt這種確實有需要的
  2. 所有的依賴包都應該本地安裝,即使是那些已經全局安裝過的

本地安裝的依賴包,其命令都位於當前項目的node_module/.bin文件夾下。package.json文件的"scripts"部分所使用的依賴包命令都會先去這個文件夾尋找

例如,你的 package.json里有這么一段:
"scripts": {
    "build:js": "tsc"
}

那么,當你運行npm run build:js時,npm會先去當前項目的node_module/.bin里尋找對應的執行文件,如果你沒有本地安裝,才會使用全局級別的命令。

3、npm常用命令的區別

npm i 是npm install的縮寫

npm i 有以下幾種方式:

npm i module_name              # 安裝模塊到項目目錄下
npm i module_name -g            # -g 的意思是將模塊安裝到全局,具體安裝到磁盤哪個位置,要看 npm config prefix 的位置。 
npm i module_name -S(-save)      # --save 的意思是將模塊安裝到項目目錄下,並在package文件的dependencies節點寫入依賴。 
npm i module_name -D(--save-dev)   # --save-dev 的意思是將模塊安裝到項目目錄下,並在package文件的devDependencies節點寫入依賴。

具體說明如下:

npm i module_name

  • 會把moudule_name包安裝到node_modules目錄中
  • 不會修改package.json
  • 之后運行npm i命令時,不會自動安裝moudule_name

npm i module_name -g

  • 安裝模塊到全局,不會在項目node_modules目錄中保存模塊包。
  • 不會將模塊依賴寫入devDependencies或dependencies 節點。
  • 運行 npm i 初始化項目時不會下載模塊。

npm i module_name -S

  • 會把moudule_name包安裝到node_modules目錄中
  • 會在package.json的dependencies屬性下添加moudule_name
  • 之后運行npm i命令時,會自動安裝moudule_name到node_modules目錄中
  • 之后運行npm i --production或者注明NODE_ENV變量值為production時,會自動安裝msbuild到node_modules目錄中,即是在線上環境運行時會將包安裝

npm i module_name –D

  • 會把moudule_name包安裝到node_modules目錄中
  • 會在package.json的devDependencies屬性下添加moudule_name
  • 之后運行npm i命令時,會自動安裝moudule_name到node_modules目錄中
  • 之后運行npm i –production或者注明NODE_ENV變量值為production時,不會自動安裝moudule_name到node_modules目錄中

使用原則:
devDependencies 節點下的模塊是我們在開發時需要用的,比如項目中使用的 gulp ,壓縮css、js的模塊。這些模塊在我們的項目部署后是不需要的,所以我們可以使用-D的形式安裝。像 emoudule_namepress 這些模塊是項目運行必備的,應該安裝在 dependencies 節點下,所以我們應該使用-S的形式安裝。
總結為一句話:運行時需要用到的包使用–S,否則使用–D。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM