對於一個項目,常用的一些npm簡單命令包含的功能有:初始化一個文件夾(npminit),下載npm模塊(npminstall),創建測試(npmtest)和自定義腳本(npmrun)。但是,進一步瞭解一些npm的使用技巧可以徹底改變你的日常開發任務。下面是小編爲大家整理的使用NPM的技巧,歡迎參考~
如果你是一個Javascript系的開發者,一定不會陌生NPM,它既是一個平臺,也是一個工具。在這個平臺上,我們能夠使用其他開發者提供的功能代碼,當然我們也能將我們自己代碼提交到這裏分享給世界上的開發者。
[url=500]500[/url]
以下記錄一些NPM作爲工具的一些使用技巧。
npmrc
c做爲npm的配置文件,它可以定義在多個地方。
~/c
用戶根目錄,根目錄內所有的npm指令都會查詢到該配置
/path/to/npm/npmrc
npm內建配置文件
./c
當前項目根目錄,用於配置特定於當前項目的配置
npmrc對我們來說十分有用,我們可以配置例如username、registry、email等信息。eg:
save=true
save-exact=true
username=wfsovereign
registry=
npm最讓人頭疼的問題之一就是版本號了,這裏配置了save和save-exact屬性,作用是讓我們npminstall指令安裝的依賴自動保存在文件的dependencies中並且讓版本號固定。
一些國內的服務器在拉取某些被牆的包的經常會失敗或者速度很慢,這個時候我們可以試試淘寶NPM鏡像(這是一個完整鏡像,你可以用此代替官方版本(只讀),同步頻率目前爲10分鐘一次以保證儘量與官方服務同步)。官方還定製了cnpm,這個看具體情況而定了。比如,我曾經的一個項目,部署在微軟的Asure上面,這個服務器感覺被牆的厲害,用官方的npm庫下phantomjs的zip文件運氣好的話也得下個兩三次才能下下來,後來爲了解決這個問題嘗試了淘寶鏡像,不過問題就出在用了cnpm,用cnpm拉的.包在本地編譯不了,後來換回npm,使用淘寶鏡像,一切正常了~
是項目的配置管理文件,它定義了這個項目所需要的各個依賴模塊以及項目的配置信息(名字,版本號,許可證等)。一個最基本的必須有name和version,差不多長這樣:
{
"name":"xxx",
"version":0.0.0
}
我們可以通過npminit指令初始化創建一個文件,
[url=500]500[/url]
下面分屬性介紹
scripts
scripts定義了一些腳本指令的npm命令縮寫,通過這些命令我們可以方便的啓動項目、進行測試或者拿到一些鉤子來做某些指令前預先做的事,
[url=406]406[/url]
當我們執行npmtest會得到如下輸出:
[url=404]404[/url]
通過如上實驗,我們能夠知道,prexx指令是一個預執行指令,postxx是一個後置指令,他倆都和xx指令強相關。
main
main指定項目加載的入口文件,默認是根目錄的
file
file是一個字符串的數組,指定我們發佈的包應該包含當前目錄的哪些文件,這個在我們發佈包的時候很有用,因爲開發包裏面的文件夾不是都需要發佈出去的。當然一下文件是始終會被包含進去的,不論我們是否設置,
README
CHANGES/CHANGELOG/HISTORY
LICENSE/LICENCE
NOTICE
Thefileinthe“main”field
keywords
keywords指定了在庫中搜索時能夠被哪些關鍵字搜索到,所以一般這個會多寫一些項目相關的詞在這裏,這是一個字符串的數組。
其餘屬性詳情可以查詢官方文檔
semanticversion
關於語義化的版本號,這裏不多講,放一些preference
npmsemver
Gravatarssemver
Nodejs項目中最常見的一些版本標識(*,~,^),經常忘了它們的含義,這裏記錄一下:
*任意版本
1.0.0安裝指定的1.0.0版本
lodash:4.7.0會安裝準確的4.7.0到我們的node_module目錄
~1.0.0安裝>=1.0.0小於1.(0+1).0的最新版本
^1.0.0安裝>=1.0.0小於(1+1).0.0的最新版本
packagepublish
如何發佈一個包?
npmaddUser按照提示輸入賬號密碼,創建一個npm的賬號,如果已有賬號直接到下一步
npmwhoami查看當前用戶,確認是使用當前用戶來發布包
npmpublish然後就可以直接發佈了,當然這個時候可能會出現各種問題,比如你的包和別人的重名了,或者當前的包的版本號已經發布過了等等
說到發佈包,這裏在記錄一些開發包的小技巧。
更精準的模塊搜索
到目前爲止,npm上已經有超過350000個模塊了,並且每天還在持續增長。儘管有很多非常棒的模塊,但是你還是想避免使用一些不受歡迎的、存在bug的或者無人維護的模塊。在npmjs和Github上搜索npm模塊是很實用但這還有一些其它選擇:
npms
npms根據一個基於項目版本、模塊下載次數、最新更新日期、提交頻率、測試覆蓋率、文檔、貢獻者數量、issues數、star數、forks數和作者在社區的地位的綜合測量分數進行模塊排名。
npmDiscover
npmDiscover定位於快速搜索和其它模塊通常一起使用的模塊,如body-parser通常和Express一起使用。
PackagesbyPageRank
PackagesbyPageRank按照模塊的谷歌排名進行搜索和排序。
CuratednpmLists
還一個選擇就是利用別人的搜索結果。當需要一個健壯的解決方案時,我經常會參考sindresorhus的。
我們在開發包的時候免不了一些調試,但是這些調試的過程我們並不想它發佈又想確保當前的功能是可用的,這個時候有兩個辦法能夠幫助我們來解決這個問題。
npmlink
關於npmlink的詳細介紹我們可以看官網,這裏介紹三種用法:
直接在我們開發包的主目錄下直接使用,這個時候,相當於我們在npmglobal的目錄下符號鏈接了當前包。
npmlinkpackage-name,作用相當於把一個全局安裝的包link到了我們當前目錄下node_module中。
在文件的dependencies中使用如下方式聲明,然後就如同使用一個已經正常發佈的包一樣安裝使用就行。
"dependencies":{
"bar":"file:../foo/bar"
}
NPM-NetworkPowerManager網絡管理電源控制器,是克萊沃自主研發、生產製造的具有世界最先進技術水平的新一代網絡管理電源監控產品。