NPM做爲Node的模塊管理和發佈工具,做用與Ruby的gem、Python的pypl或setuptools、PHP的pear和.Net的Nuget同樣。在當前前端工程化極速狂奔的年代,即便不作nodejs的開發,也須要學習和使用NPM的,誰叫grunt、bower、yeoman這一堆的工具都經過NPM發佈呢?! 本文爲針對非nodejs的開發者整理的NPM使用說明。固然最好的教程仍是官網的啦!html
nodejs以包的形式組織程序模塊,而包的定義卻十分簡單——包含文件內容符合規範package.json文件的目錄或歸檔文件。並經過」package-name」@」version」來惟一標識每一個包。前端
包的定義和NPM都圍繞着package.json文件作文章,package.json文件其實就至關於JAVA中的MANIFEST.MF文件,用於存放模塊的名稱、版本、做者、機構、模塊入口、依賴項等信息。首先咱們經過node
npm init git
命令在當前工做目錄下以用戶引導的方式建立一個全新的package.json文件。而後經過github
npm help json shell
命令打開幫助文檔,並根據實際的項目需求自行初始化package.json的項目便可。下面將對基礎配置項進行敘述。npm
必選項,表示模塊名稱。命名時不能包含js、node、和url中須要轉義的字符,不能以.
和_
爲開頭。json
必選項,表示模塊的版本號。版本號以前端工程化
主版本號(Major).副版本號(Minor).補丁版本號(Patch) 數組
構成(如1.2.0)。 而engines、dependencies和devDependencies等配置項中可以使用語義化版本號語法,具體以下:
標記
介紹
1.1.1
精確下載安裝1.1.1版本的包
>、=1.1.1
分別表示下載安裝大於、小於等於、大於等於1.1.1版本的包
1.0.1-1.1.1
表示版本範圍是包含1.0.1到1.1.1版本的包
~1.1.1
表示儘可能採用靠近1.1.1版本的包,但可用的包版本範圍是1.1.1-0到1.1.x-x版本的包
~1.1
表示下載安裝1.1.x-x版本的包
~1
表示下載安裝1.x.x-x版本的包
^1.1.1
表示包版本範圍是1.1.1到1.x.x-x
^0.1.1
表示包版本範圍是1.1.1到1.1.x-x
^1.1
表示包版本範圍是1.1.x-x到1.x.x-x
^1
表示包版本範圍是1.x.x-x
空格、x、
表示任意版本便可
其餘
兩個版本選擇器間,空格表示and
關係,」||」 表示or
關係。
必選項,模塊入口文件相對路徑(相對於模塊根目錄)。
可選項,表示模塊功能描述,顯示在
npm search "package-name"
中
可選項,數組類型,表示模塊的關鍵字,顯示在
npm search "package-name"
中
可選項,表示發起者信息。示例以下:
{
"author": {
"name": "luoyue",
"email": "luoyue@zz173.com",
"url": "https://post.zz173.com"
},
}
可選項,依賴的node版本。示例以下:
{
"engines":{
"node": ">= 0.8.0"
}
}
可選項,源碼託管地址。示例以下:
{
"repository": {
"type": "git",
"url": "git+https://github.com/rozbo/hexo-hrefmd.git",
},
}
可選項,自定義在cli中輸入
npm "script"
時實際執行的程序。npm默認提供大量的script供咱們調用。
可選項,用於配置模塊的生產環境依賴包和開發環境依賴包。當執行npm install時,npm會根據這兩個配置項的值去下載安裝相關的依賴包。二者的區別是devDependencies是模塊開發過程的依賴包(如:grunt只在開發時有用的模塊),而且當其餘模塊須要依賴當前模塊時,當經過npm install 「package-name」時會自動下載安裝dependencies的包而不會下載devDependencies的包。
如今咱們對package.json有必定的瞭解了,如今就到理論+實踐時間咯。在實踐以前咱們要先配置一下NPM的資源庫(國內被牆,你懂的),內網用戶還要配置一下網絡代理地址等信息。
查看部分配置信息——
npm config ls
查看全部配置信息——
npm config ls -l
修改配置信息的三種方式:
修改用戶家目錄的.npmrc文件(沒有則新建一個);
npm config set "config" "config-value"
命令;
npm config set registry http://registry.npm.taobao.org/
npm config set proxy http://proxy.com:8081/
好比–registry=」registry-uri」等命令可選項臨時配置。
npm install grunt –registry=http://registry.npm.taobao.org
在安心玩耍以前咱們要先了解一件事件,就是包的做用範圍分爲 全局 和 本地 兩種。
用做在cli上直接調用,而沒法在項目中經過require導入依賴包。如將grunt-cli安裝到全局時,則可在cli中輸入grunt調用了!
npm install -g grunt-cli
cmd或shell中直接調用
grunt
用做在項目中經過require導入依賴包,供項目使用。
那麼全局和本地的依賴包究竟是存放在哪裏的呢?經過
npm root -g
和
npm root
可分別查看全局和本地的依賴包下載安裝的絕對目錄了。本地的依賴包會存放在當前項目根目錄下的node_modules目錄下。
如今咱們能夠正式操做依賴包了!
npm search "package-name"
npm view "package-name"
另外咱們能夠單獨查看package.json某個配置。
npm view "package-name" dependencies
npm view "package-name" repository.url
npm view "package-name" engines
npm list
npm list -g
npm outdated "package-name"
本地
npm install "package-name"
全局
npm install -g "package-name"
這樣會安裝最新版的包,若須要安裝特定版本,則
npm install "package-name"@"version"
卸載本地
npm uninstall "package-name"
卸載全局
npm uninstall -g "package-name"
更新本地
npm update "package-name"
更新全局
npm update -g "package-name"
站在使用者的角度,掌握上述章節的內容已經足夠了,但當咱們開發出好玩的項目並且又想和你們分享時,那麼下面的內容就不得不瞭解了!
npm adduser
,而後根據引導輸入賬號、密碼和郵箱地址。
npm login
,登陸信息會保存在客戶端。
npm publish
。(建議發佈版本從1.0.0開始)
通過上述步驟咱們就可發佈模塊了。但這個時候你也許會考慮到項目中部分目錄和文件不該該被髮布出去,應該有一個像.gitignore的文件來配置這些排除項。看來你猜對了,那就是.npmignore文件,不過npm作得更靈活一些!
默認不帶.npmignore文件,若項目中帶.gitignore則使用.gitignore文件內容的配置項;
若帶.npmignore文件則不使用.gitignore文件中的配置項;
即便配置.npmignore文件,也沒法排除package.json和README.*文件;
NPM內置設定如下文件必須被排除
.*.swp
.*.swp
._*
.DS_Store
.git
.hg
.lock-wscript
.svn
.wafpickle-*
CVS
npm-debug.log
如今咱們終於能夠安心下載各類node依賴包來推動前端工程化的步伐了!