小編給大家分享一下NPM使用技巧有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比西湖網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式西湖網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋西湖地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。
以下記錄一些NPM作為工具的一些使用技巧。
npmrc
.npmrc 做為npm的配置文件,它可以定義在多個(gè)地方。
~/.npmrc
用戶根目錄,根目錄內(nèi)所有的npm指令都會(huì)查詢到該配置
/path/to/npm/npmrc
npm內(nèi)建配置文件
./.npmrc
當(dāng)前項(xiàng)目根目錄,用于配置特定于當(dāng)前項(xiàng)目的配置
npmrc對(duì)我們來說十分有用,我們可以配置例如username、registry、email等信息。 eg:
save=true save-exact=true email=wfsovereign@outlook.com username=wfsovereign registry=https://registry.npm.taobao.org
npm最讓人頭疼的問題之一就是版本號(hào)了,這里配置了save和save-exact屬性,作用是讓我們 npm install 指令安裝的依賴自動(dòng)保存在 package.json 文件的 dependencies 中并且讓版本號(hào)固定。
一些國(guó)內(nèi)的服務(wù)器在拉取某些被墻的包的經(jīng)常會(huì)失敗或者速度很慢,這個(gè)時(shí)候我們可以試試 淘寶NPM鏡像 (這是一個(gè)完整 npmjs.org 鏡像,你可以用此代替官方版本(只讀),同步頻率目前為 10分鐘 一次以保證盡量與官方服務(wù)同步)。官方還定制了 cnpm ,這個(gè)看具體情況而定了。比如,我曾經(jīng)的一個(gè)項(xiàng)目,部署在微軟的Asure上面,這個(gè)服務(wù)器感覺被墻的厲害,用官方的npm庫(kù)下phantomjs的zip文件運(yùn)氣好的話也得下個(gè)兩三次才能下下來,后來為了解決這個(gè)問題嘗試了淘寶鏡像,不過問題就出在用了cnpm,用cnpm拉的包在本地編譯不了,后來?yè)Q回npm,使用淘寶鏡像,一切正常了~
package.json
package.json 是項(xiàng)目的配置管理文件,它定義了這個(gè)項(xiàng)目所需要的各個(gè)依賴模塊以及項(xiàng)目的配置信息(名字,版本號(hào),許可證等)。一個(gè)最基本的 package.json 必須有 name 和 version ,差不多長(zhǎng)這樣:
{ "name": "xxx", "version": 0.0.0 }
我們可以通過 npm init 指令初始化創(chuàng)建一個(gè)package.json文件,
{ "name": "test", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "wfsovereign", "license": "ISC", "devDependencies": { }, "dependencies": { } }
下面分屬性介紹
scripts
scripts 定義了一些腳本指令的npm命令縮寫,通過這些命令我們可以方便的啟動(dòng)項(xiàng)目、進(jìn)行測(cè)試或者拿到一些鉤子來做某些指令前預(yù)先做的事,
"scripts": { "pretest": "echo \"this is pre test\" ", "test": "echo \"Error: no test specified\"", "posttest": "echo \"this is post test\"" }
當(dāng)我們執(zhí)行 npm test 會(huì)得到如下輸出:
this is pre test test@1.0.0 test echo “Error: no test specified” Error: no test specified test@1.0.0 posttest echo “this is post test” this is post test
通過如上實(shí)驗(yàn),我們能夠知道, prexx 指令是一個(gè)預(yù)執(zhí)行指令, postxx 是一個(gè)后置指令,他倆都和 xx 指令強(qiáng)相關(guān)。
main
main 指定項(xiàng)目加載的入口文件,默認(rèn)是根目錄的inde.js
file
file 是一個(gè)字符串的數(shù)組,指定我們發(fā)布的包應(yīng)該包含當(dāng)前目錄的哪些文件,這個(gè)在我們發(fā)布包的時(shí)候很有用,因?yàn)殚_發(fā)包里面的文件夾不是都需要發(fā)布出去的。當(dāng)然一下文件是始終會(huì)被包含進(jìn)去的,不論我們是否設(shè)置,
package.json README CHANGES / CHANGELOG / HISTORY LICENSE / LICENCE NOTICE The file in the “main” field
keywords
keywords 指定了在庫(kù)中搜索時(shí)能夠被哪些關(guān)鍵字搜索到,所以一般這個(gè)會(huì)多寫一些項(xiàng)目相關(guān)的詞在這里,這是一個(gè)字符串的數(shù)組。
其余屬性詳情可以查詢 官方文檔
semantic version
關(guān)于語(yǔ)義化的版本號(hào),這里不多講,放一些preference
npm semver Gravatars semver
Nodejs項(xiàng)目中最常見的一些版本標(biāo)識(shí)( *, ~, ^ ),經(jīng)常忘了它們的含義,這里記錄一下:
* 任意版本
1.0.0 安裝指定的1.0.0版本
lodash: 4.7.0 會(huì)安裝準(zhǔn)確的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的***版本
package publish
如何發(fā)布一個(gè)包?
npm addUser 按照提示輸入賬號(hào)密碼,創(chuàng)建一個(gè)npm的賬號(hào),如果已有賬號(hào)直接到下一步
npm whoami 查看當(dāng)前用戶,確認(rèn)是使用當(dāng)前用戶來發(fā)布包
npm publish 然后就可以直接發(fā)布了,當(dāng)然這個(gè)時(shí)候可能會(huì)出現(xiàn)各種問題,比如你的包和別人的重名了,或者當(dāng)前的包的版本號(hào)已經(jīng)發(fā)布過了等等
說到發(fā)布包,這里在記錄一些開發(fā)包的小技巧。
我們?cè)陂_發(fā)包的時(shí)候免不了一些調(diào)試,但是這些調(diào)試的過程我們并不想它發(fā)布又想確保當(dāng)前的功能是可用的,這個(gè)時(shí)候有兩個(gè)辦法能夠幫助我們來解決這個(gè)問題。
npm link
關(guān)于 npm link 的詳細(xì)介紹我們可以看 官網(wǎng) ,這里介紹三種用法:
直接在我們開發(fā)包的主目錄下直接使用,這個(gè)時(shí)候,相當(dāng)于我們?cè)趎pm global的目錄下符號(hào)鏈接了當(dāng)前包。
npm link package-name , 作用相當(dāng)于把一個(gè)全局安裝的包link到了我們當(dāng)前目錄下node_module中。
在 package.json 文件的dependencies中使用如下方式聲明,然后就如同使用一個(gè)已經(jīng)正常發(fā)布的包一樣安裝使用就行。
"dependencies": { "bar": "file:../foo/bar" }
以上是“NPM使用技巧有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!