天天看點

npm指令詳解

npm 檢視目前源

npm config get registry

npm config set registry https://registry.npm.taobao.org

npm config set registry https://registry.npmjs.org

什麼是NPM

npm 是 Node.js 官方提供的包管理工具,他已經成了 Node.js 包的标準釋出平台,用于 Node.js 包的釋出、傳播、依賴控制。npm 提供了指令行工具,使你可以友善地下載下傳、安裝、更新、删除包,也可以讓你作為開發者釋出并維護包。

為什麼要使用 NPM

  • 允許使用者從 npm 伺服器下載下傳别人編寫的第三方包到本地使用。
  • 允許使用者從 npm 伺服器下載下傳并安裝别人編寫的指令行程式到本地使用。
  • 允許使用者将自己編寫的包或指令行程式上傳到 npm 伺服器供别人使用。
  • 将開發者從繁瑣的包管理工作(版本、依賴等)中解放出來,更加專注于功能的開發。

簡單來說:npm是node.js提供的包管理工具,可以讓開發者下載下傳或上傳可以複用的代碼。

npm 的包安裝分為本地安裝(local)、全局安裝(global)兩種

本地安裝

  • 1. npm 在預設情況下會從​​http://npmjs.org​​ 搜尋或下載下傳包,将安裝包放在 ./node_modules 下(運作 npm 指令時所在的目錄),如果沒有 node_modules 目錄,會在目前執行 npm 指令的目錄下生成 node_modules 目錄。
  • 2. 可以通過 require() 來引入本地安裝的包。
  • 3. 本地安裝指的是将一個子產品下載下傳到目前項目的 node_modules 子目錄,然後隻有在項目目錄之中,才能調用這個子產品。

全局安裝

  • 1. 将安裝包放在 /usr/local 下或者你 node 的安裝目錄。
  • 2. 可以直接在指令行裡使用。

如果把包安裝到全局,可以提供程式的重複利用程度,避免同樣的内容的多分副本,但壞處是難以處理不同的版本依賴。如果把包安裝到目前目錄,或者說本地,則不會有不同程式依賴不同版本的包的沖突問題,同時還減輕了包作者的 API 相容性壓力,但缺陷則是同一個包可能會被安裝許多次。

本地模式和全局模式的特點如下:

模式 可通過 require 使用 注冊 PATH
本地模式
全局模式
# 本地安裝
npm install <package name>

# 全局安裝
npm install -global <package name>
npm install -g <package name>      

Npm常用指令詳解

 檢視npm版本:npm -v

更新npm:npm install npm -g/npm i npm -g  // install可簡寫為i

使用淘寶鏡像:npm install -g cnpm --registry=https://registry.npm.taobao.org

檢視所有全局安裝的子產品:npm list -g

​npm init: npm init​

​​ 用來初始化生成一個新的 package.json 檔案。它會向使用者提問一系列問題,如果你覺得不用修改預設配置,一路回車就可以了。

如果使用了 -f(代表force)、-y(代表yes,npm init -y),則跳過提問階段,直接生成一個新的 package.json 檔案。

npm cache clean -f 清除緩存

npm install

npm install/i [package_name]      

安裝之前,npm install 會先檢查,node_modules 目錄之中是否已經存在指定子產品。如果存在,就不再重新安裝了,即使遠端倉庫已經有了一個新版本,也是如此。

如果你希望,一個子產品不管是否安裝過, npm 都要強制重新安裝,可以使用 -f 或 --force 參數。

npm install <packageName> --force      

安裝不同版本

install 指令總是安裝子產品的最新版本,如果要安裝子產品的特定版本,可以在子產品名後面加上 @ 和版本号。

npm install sax@latest
npm install [email protected]
npm install sax@">=0.1.0 <0.2.0"      

install 指令可以使用不同參數,指定所安裝的子產品屬于哪一種性質的依賴關系,即出現在 packages.json 檔案的哪一項中。

–save:子產品名将被添加到 dependencies,可以簡化為參數-S。

–save-dev:子產品名将被添加到 devDependencies,可以簡化為參數-D。

npm install sax --save
npm install node-tap --save-dev
# 或者
npm install sax -S
npm install node-tap -D      

npm install 預設會安裝 package.json 中 dependencies 字段和 devDependencies 字段中的所有子產品,如果使用 --production 參數,可以隻安裝 dependencies 字段的子產品。

npm install --production
# 或者
NODE_ENV=production npm install      

一旦安裝了某個子產品,就可以在代碼中用 require 指令加載這個子產品。

var backbone = require('backbone')
console.log(backbone.VERSION)      

npm install 也支援直接輸入 Github 代碼庫位址:

npm install git://github.com/package/path.git
npm install git://github.com/package/path.git#0.1.0      
  • npm install 子產品:安裝好後不寫入package.json中
  • npm install 子產品 --save安裝好後寫入package.json的dependencies中(生産環境依賴)
  • npm install 子產品 --save-dev安裝好後寫入package.json的devDepencies中(開發環境依賴)

npm set: 用來設定環境變量

npm set init-author-name 'Your name'
npm set init-author-email 'Your email'
npm set init-author-url 'http://yourdomain.com'
npm set init-license 'MIT'      

​上面指令等于為 npm init 設定了預設值,以後執行 npm init 的時候,package.json 的作者姓名、郵件、首頁、許可證字段就會自動寫入預設的值。這些資訊會存放在使用者主目錄的 ~/.npmrc檔案,使得使用者不用每個項目都輸入。如果某個項目有不同的設定,可以針對該項目運作 npm config。​

npm info

​npm info​

​ 指令可以檢視每個子產品的具體資訊。比如,檢視 underscore 子產品的資訊。

npm info underscore      

​上面指令傳回一個 JavaScript 對象,包含了 underscore 子產品的詳細資訊。這個對象的每個成員,都可以直接從 info 指令查詢。​

npm info underscore description
npm info underscore homepage
npm info underscore version      

npm search

​npm search​

​ 指令用于搜尋 npm 倉庫,它後面可以跟字元串,也可以跟正規表達式。

$ npm search <搜尋詞>      

​npm list npm list 指令以樹形結構列出目前項目安裝的所有子產品,以及它們依賴的子產品。​

$ npm list

# 加上 global 參數,會列出全局安裝的子產品
$ npm list -global

# npm list 指令也可以列出單個子產品
$ npm list underscore      

npm run

npm 不僅可以用于子產品管理,還可以用于執行腳本。package.json 檔案有一個 scripts 字段,可以用于指定腳本指令,供 npm 直接調用。

package.json

{
  "name": "myproject",
  "devDependencies": {
    "jshint": "latest",
    "browserify": "latest",
    "mocha": "latest"
  },
  "scripts": {
    "lint": "jshint **.js",
    "test": "mocha test/"
  }
}      
  • npm uninstall -g <package>
  • npm uninstall 子產品:删除子產品,但不删除子產品留在package.json中的對應資訊
  • npm uninstall 子產品 --save删除子產品,同時删除子產品留在package.json中dependencies下的對應資訊
  • npm uninstall 子產品 --save-dev删除子產品,同時删除子產品留在package.json中devDependencies下的對應資訊