Node.js npm 詳解
Node.js npm 詳解
一、npm簡介
安裝npm請閱讀前輩的文章,很詳細的介紹。
npm的全稱:Node Package Manager.
(1)通俗的理解
其實從字面意思就可以理解這個產品有什麽作用翻譯為“Node包管理器”。對,就是Node的包的一個管理工具,目前我嘗試的有
- 下載並安裝包(npm install [pkg])
- 升級安裝包(npm update [pkg])
- 卸載安裝包(npm uninstall/rm [pkg]),可以指定卸載包的版本號 …
其實這些命令很簡單,常用的必須記住,不常用的查詢即可,這才是比較好的學習知識方式。
在終端輸入:
//查看npm擁有的全部命令 $ npm --help $ npm help //查看某一個npm命令的詳細用法 $ npm <command> --help $ npm help <command>
(2)專業的解釋
npm(Node Package Manager)是Node.js下的主流套件管理程式。它在Node.js v0.6.x版本之後,內建於Node系統。通過npm可以協助開發者安裝、卸載、刪除、更新Node.js套件,並且可以通過npm發布自己的插件。
二、類似的產品
其實學習一個產品,可以聯系其它產品,能夠更好的理解現在手頭的產品。第一次學習npm我的第一反應就是,很像linux/mac平臺的很多軟件,依賴管理的方式可以參考maven…當然相似性可以隨便聯想。
接下來,舉幾個例子吧,當然詳細了解可以查baidu && google。
- gem
- PyPL
- pear
- macPort
- Homebrew
- rem
- apt-get
- yum …
是不是很多都很熟悉?這樣對於npm的認識就不用局限於概念啦。
三、npm基礎功能
(1)npmrc文件介紹
首先介紹一下npmrc文件,這個文件是npm包管理器的配置文件。
與npmrc相關的三個文件:
- 用戶配置文件:~/.npmrc
- 全局配置文件:$PREFIX/npmrc
- npm內部配置文件:安裝npm的目錄下
下面仔細看一下npm config的配置。
(2)npm獲取配置的6種方式(優先級從高到低):
1.命令行參數
$ --proxy http://<server>:<port>
2.環境變量
以”npmconfig“為前綴的環境變量將會被認為是npm的配置屬性。 像Maven鏡像的概念,方便通信吧。
$ npm_config_proxy=http://<server>:<port>
3.用戶配置文件
//查看文件路徑
$ npm config get userconfig
//mac系統默認路徑
$HOME/.npmrc
4.全局配置文件
//查看文件路徑
$ npm config get globalconfig
//mac系統默認路徑
/usr/local/etc/npmrc
3,4中輸入終端的效果如圖:
5.內置配置文件
安裝npm的目錄下的npmrc文件。
6.默認配置
如果前5條均未設置,npm會使用默認配置參數。
(4)npm install
“安裝指定包”:這個命令不難,但是也有需要註意的地方,就是安裝的模式有兩種,在後面會單獨講解。
如果不知道包的具體名稱,可以在http://search.npmjs.org上進行搜索。
(5)npm uninstall
“卸載指定包”:在help的時候,會給你推薦npm rm 這個命令,uninstall會卸載掉包的依賴,rm。
(6)npm ls
查看安裝的包清單,其實和linux的ls命令很像,可以跟很多參數,詳情可以使用
$ npm help ls
(7)npm search
搜索包的詳細信息,比如我們搜索express試試。第一次搜索,會提示建立索引,需要耐心等待片刻,大家測試的時候不要就關掉啦終端。
npm WARN Building the local index for the first time, please be patient
其實看上去復雜,只是東西有點大,不過主要包含以下6個部分:
- 名稱
- 描述
- 作者
- 發布時間
- 發布版本號
- 關鍵字
(8)npm update
更新安裝的包
更多API可以查看官網:https://npmjs.org/doc/
四、版本號的知識。
在node.js中的package.json配置文件中,我們需要配置版本號,比如0.1.2
第一位數字:主版本號
第二位數字:子版本號
第三位數字:補丁版本號
找到一個不錯的介紹軟件項目版本號的文章
軟件項目版本號的命名規則及格式
為什麽要解釋這個呢?肯定是有用,因為npm安裝的時候是可以選擇版本號的,有點理解會比較好吧,至少我是這麽認為的。
安裝Node和npm前半部分的配置可以參考之前我的兩篇文章:
- Hello Node
四、本地模式和全局模式
如果你了解環境變量裏面的,用戶變量和系統變量。可以做一個類比進行理解。當然,windows上面的環境變量概念比較好理解。
1. 本地模式
本地模式下安裝包的特點
- 不會寫入PATH變量(也就是環境變量,無法在全局引用該安裝包,不能在終端直接使用)
- 能夠在不同的node_modules目錄,安裝不同版本的安裝包
- 能夠通過require()來引入安裝包
使用“npm install [@]”安裝的包,默認會安裝在當前目錄的“node_modules”目錄下(如果沒有該目錄,在執行命令的時候,會自動幫你創建)。
//專業的寫法
./node_modules
(1)默認采用本地模式安裝
npm install <pkg>
(2)信息寫入package.json文件
npm install <pkg> --save
這個命令在安裝包的同時,將信息寫入package.json。
@version表示指定安裝包的版本號,是可選項目,默認安裝最新版本。
項目路徑中如果有package.json文件,使用npm install方法就可以根據dependencies配置安裝所有的依賴包。
如果這樣配置,當代碼提交到github時,就不用提交node_modules這個文件夾。
2. 全局模式
全局模式安裝包的特點
- 不需要重復安裝
- 不能使用require()引入
- 會寫入PATH,並建立軟鏈接,使用命令行的方式使用
- 不方便指定特定的版本運行
(1)采用全局模式安裝
npm install -g <pkg>
(3)在mac中全局的目錄
//安裝包所在目錄
/usr/local/lib/node_modules/
//運行命令的軟鏈接所在目錄
/usr/local/bin
(4)查看安裝包路徑
//查看當前包的安裝路徑
npm root
//查看全局的包的安裝路徑
npm root -g
(5)設置全局模式安裝目錄
//設置後,以全局模式將會安裝在此目錄中,不過需要手動加入PATH,切記
npm config set prefix <global dir>
//設置npm緩存文件的存放路徑
npm config set cache <cache dir>
(6)查看默認模式
//默認返回:false
$ npm get global
$ npm config get global
(7)設置為默認以全局模式安裝,就不用每次加”-g”參數啦。
$ npm set global=true
$ npm config set global=true
Node.js npm 詳解