1、什么是NPM?
NPM(node package manager),通常稱為node包管理器,主要功能就是管理node包,包括:安裝、卸載、更新、查看、搜索、發(fā)布等。NPM是基于couchdb一個數(shù)據(jù)庫,詳細記錄了每個包的信息(作者、版本、依賴、授權(quán)信息等)
NPM官方網(wǎng)站:NPM官方網(wǎng)站
NPM官方文檔:NPM官方文檔
我們需要了解什么?
1、NPM的安裝、卸載、升級、配置
2、NPM的使用:packer的安裝、卸載】升級、查看、搜索、發(fā)布
3、NPM包的安裝:本地安裝 ?、全局安裝
4、package.json:包描述信息
5、package版本:版本說明
NPM安裝
本地安裝:package會被下載到當(dāng)前所在目錄,只能愛當(dāng)前目錄下使用
全局安裝:package會被下載到待定的系統(tǒng)目錄下,安裝的package能在所有目錄下使用
npm install pkg-本地安裝
運行如下命令,就會在當(dāng)前目錄下安裝 grunt-cli (grunt命令行工具)
npm install grunt-cli
安裝結(jié)束后,當(dāng)前目錄下回多出一個 node_modules 目錄,grunt-cli就安裝在里面。同時注意控制臺輸出的信息:
grunt-cli@1.2.0? /Users/user/Desktop/NPM
├─┬ findup-sync@0.3.0
├── grunt-known-options@1.1.0
├─┬ nopt@3.0.6
└── resolve@1.1.7
npmdemo@1.0.0:當(dāng)前安裝的package為grunt-cli,版本是1.2.0
/Users/user/Desktop/NPM:安裝目錄
nopt、resolve、findup-sync:依賴的包有nopt、resolve、findup-sync,它們各自的版本、依賴在后面的括號里列出來
npm install pkg-全局安裝
上面已經(jīng)安裝了grunt-cli,然后你跑到其他目錄下面運行如下命令
grunt
果斷提示你grunt命令不存在,為什么呢?因為上面只是進行了 本地安裝 ,grunt命令只能在對應(yīng)安裝目錄下使用。
Fatal error: Unable to find local grunt.
如果為了使用grunt命令,每到一個目錄下都得重新安裝一次,因此,用全局安裝,很簡單,需要加上參數(shù) -g?
npm install -g grunt-cli
此時控制臺輸入的信息有點不同。主要的區(qū)別在于安裝目錄,現(xiàn)在變成了 /usr/local/lib/node_modules/grunt-cli/bin/grunt,/usr/local/lib,這就是全局安裝
├─┬ findup-sync@0.3.0
├── grunt-known-options@1.1.0
├─┬ nopt@3.0.6
└── resolve@1.1.7
npm包管理
nam的包管理命令使用頻率比較高,安裝、卸載、更新、查看、搜索、發(fā)布等等
安裝最新版本的grunt-cli
npm install grunt-cli
安裝0.1.9版本的grunt-cli
npm install grunt-cli@"0.1.9"
通過package.json進行安裝,如果我們的項目依賴了很多package,一個一個地安裝那將是個體力活。我們可以將項目依賴的包都在package.json這個文件里聲明,然后一行命令搞定
npm install
卸載grunt-cli
npm uninstall grunt-cli
卸載0.1.9版本的grunt-cli
npm uninstall grunt-cli@"0.1.9"
npm ls:查看安裝了哪些包,運行如下命令,就可以查看當(dāng)前目錄安裝了哪些package
npm ls
/Users/user
├─┬ grunt-cli@1.2.0
│ ├─┬ findup-sync@0.3.0
│ │ └─┬ glob@5.0.15
│ │? ├─┬ inflight@1.0.6
│ │? │ └── wrappy@1.0.2
│ │? ├── inherits@2.0.3
│ │? ├─┬ minimatch@3.0.3
│ │? │ └─┬ brace-expansion@1.1.6
│ │? │? ├── balanced-match@0.4.2
│ │? │? └── concat-map@0.0.1
│ │? ├── once@1.4.0
│ │? └── path-is-absolute@1.0.1
│ ├── grunt-known-options@1.1.0
│ ├─┬ nopt@3.0.6
│ │ └── abbrev@1.0.9
│ └── resolve@1.1.7
└─┬ jsdoc@3.4.3
├── bluebird@3.4.6
├─┬ catharsis@0.8.8
│ └─┬ underscore-contrib@0.3.0
│? └── underscore@1.6.0
├── escape-string-regexp@1.0.5
├─┬ espree@3.1.7
│ ├── acorn@3.3.0
│ └── acorn-jsx@3.0.1
├── js2xmlparser@1.0.0
├─┬ klaw@1.3.1
│ └── graceful-fs@4.1.11
├── marked@0.3.6
├─┬ mkdirp@0.5.1
│ └── minimist@0.0.8
├─┬ requizzle@0.2.1
│ └── underscore@1.6.0
├── strip-json-comments@2.0.1
├── taffydb@2.6.2
└── underscore@1.8.3
npm ls pkg:查看特定package的信息,運行如下命令,輸出grunt-cli的信息
npm ls grunt-cli
如果要查看更詳細信息,可以通過 npm info pkg ,輸出的信息非常詳盡,包括作者、版本、依賴等。
npm info grunt-cli
npm search pga:搜索
npm update grunt-cli
npm發(fā)布
這個命令我自己也還沒實際用過,不誤導(dǎo)大家,語法如下,也可參考官方對于package發(fā)布的說明:package發(fā)布
NPM配置
npm的配置工作主要是通過nam config 命令,包含了增、刪、改、查幾個步驟,以proxy為例
關(guān)于package.json
Package.json 屬性說明
name - 包名。
version - 包的版本號。
description - 包的描述。
homepage - 包的官網(wǎng) url 。
author - 包的作者姓名。
contributors - 包的其他貢獻者姓名。
dependencies - 依賴包列表。如果依賴包沒有安裝,npm 會自動將依賴包安裝在 node_module 目錄下。
repository - 包代碼存放的地方的類型,可以是 git 或 svn,git 可在 Github 上。
main - main 字段是一個模塊ID,它是一個指向你程序的主要項目。就是說,如果你包的名字叫 express,然后用戶安裝它,然后require("express")。
keywords - 關(guān)鍵字
最后,簡單地把最常見的命令,以及一些需要了解的內(nèi)容列了出來。如要進一步了解,可參考官網(wǎng)說明。此外, npm help 是我們最好的朋友,如果忘了有哪些命令,命令下有哪些參數(shù),可通過help進行查看。