NPM使用技巧

如果你是一個JavaScript系的開發(fā)者,一定不會陌生NPM浇雹,它既是一個平臺沉御,也是一個工具。在這個平臺上昭灵,我們能夠使用其他開發(fā)者提供的功能代碼吠裆,當(dāng)然我們也能將我們自己代碼提交到這里分享給世界上的開發(fā)者。

以下記錄一些NPM作為工具的一些使用技巧烂完。

npmrc

.npmrc 做為npm的配置文件试疙,它可以定義在多個地方。

  • ~/.npmrc

用戶根目錄抠蚣,根目錄內(nèi)所有的npm指令都會查詢到該配置

  • /path/to/npm/npmrc

npm內(nèi)建配置文件

  • ./.npmrc

當(dāng)前項目根目錄祝旷,用于配置特定于當(dāng)前項目的配置

npmrc對我們來說十分有用,我們可以配置例如username嘶窄、registry怀跛、email等信息。 eg:

save=true
save-exact=true
email=wfsovereign@outlook.com
username=wfsovereign
registry=https://registry.npm.taobao.org

npm最讓人頭疼的問題之一就是版本號了柄冲,這里配置了save和save-exact屬性吻谋,作用是讓我們 npm install 指令安裝的依賴自動保存在package.json文件的dependencies中并且讓版本號固定。

一些國內(nèi)的服務(wù)器在拉取某些被墻的包的經(jīng)常會失敗或者速度很慢现横,這個時候我們可以試試淘寶NPM鏡像(這是一個完整 npmjs.org 鏡像漓拾,你可以用此代替官方版本(只讀),同步頻率目前為 10分鐘 一次以保證盡量與官方服務(wù)同步)戒祠。官方還定制了cnpm骇两,這個看具體情況而定了。比如姜盈,我曾經(jīng)的一個項目脯颜,部署在微軟的Asure上面,這個服務(wù)器感覺被墻的厲害贩据,用官方的npm庫下phantomjs的zip文件運氣好的話也得下個兩三次才能下下來,后來為了解決這個問題嘗試了淘寶鏡像闸餐,不過問題就出在用了cnpm饱亮,用cnpm拉的包在本地編譯不了,后來換回npm舍沙,使用淘寶鏡像近上,一切正常了~

package.json

package.json是項目的配置管理文件,它定義了這個項目所需要的各個依賴模塊以及項目的配置信息(名字拂铡,版本號壹无,許可證等)葱绒。一個最基本的package.json必須有nameversion,差不多長這樣:

{
    "name": "xxx",
    "version": 0.0.0
}

我們可以通過npm init指令初始化創(chuàng)建一個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命令縮寫地淀,通過這些命令我們可以方便的啟動項目、進(jìn)行測試或者拿到一些鉤子來做某些指令前預(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會得到如下輸出:

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

通過如上實驗帮毁,我們能夠知道,prexx指令是一個預(yù)執(zhí)行指令豺撑,postxx是一個后置指令烈疚,他倆都和xx指令強(qiáng)相關(guān)。

main

main指定項目加載的入口文件聪轿,默認(rèn)是根目錄的inde.js

file

file是一個字符串的數(shù)組爷肝,指定我們發(fā)布的包應(yīng)該包含當(dāng)前目錄的哪些文件,這個在我們發(fā)布包的時候很有用陆错,因為開發(fā)包里面的文件夾不是都需要發(fā)布出去的灯抛。當(dāng)然一下文件是始終會被包含進(jìn)去的,不論我們是否設(shè)置危号,

  • package.json
  • README
  • CHANGES / CHANGELOG / HISTORY
  • LICENSE / LICENCE
  • NOTICE
  • The file in the "main" field

keywords

keywords指定了在庫中搜索時能夠被哪些關(guān)鍵字搜索到牧愁,所以一般這個會多寫一些項目相關(guān)的詞在這里,這是一個字符串的數(shù)組外莲。

其余屬性詳情可以查詢官方文檔

semantic version

關(guān)于語義化的版本號猪半,這里不多講,放一些preference

Nodejs項目中最常見的一些版本標(biāo)識( *, ~, ^ )偷线,經(jīng)常忘了它們的含義磨确,這里記錄一下:

  • * 任意版本
  • 1.0.0 安裝指定的1.0.0版本

lodash: 4.7.0 會安裝準(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ā)布一個包?

  1. npm addUser 按照提示輸入賬號密碼声邦,創(chuàng)建一個npm的賬號乏奥,如果已有賬號直接到下一步
  2. npm whoami 查看當(dāng)前用戶,確認(rèn)是使用當(dāng)前用戶來發(fā)布包
  3. npm publish 然后就可以直接發(fā)布了亥曹,當(dāng)然這個時候可能會出現(xiàn)各種問題邓了,比如你的包和別人的重名了,或者當(dāng)前的包的版本號已經(jīng)發(fā)布過了等等

說到發(fā)布包媳瞪,這里在記錄一些開發(fā)包的小技巧骗炉。

我們在開發(fā)包的時候免不了一些調(diào)試,但是這些調(diào)試的過程我們并不想它發(fā)布又想確保當(dāng)前的功能是可用的蛇受,這個時候有兩個辦法能夠幫助我們來解決這個問題句葵。

  • npm link

關(guān)于npm link的詳細(xì)介紹我們可以看官網(wǎng),這里介紹三種用法:

  1. 直接在我們開發(fā)包的主目錄下直接使用,這個時候乍丈,相當(dāng)于我們在npm global的目錄下符號鏈接了當(dāng)前包剂碴。
  2. npm link package-name, 作用相當(dāng)于把一個全局安裝的包link到了我們當(dāng)前目錄下node_module中轻专。
  3. package.json文件的dependencies中使用如下方式聲明忆矛,然后就如同使用一個已經(jīng)正常發(fā)布的包一樣安裝使用就行。
"dependencies": {
    "bar": "file:../foo/bar"
  }

ps: 繼續(xù)努力啊铭若,如風(fēng)少年~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末洪碳,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子叼屠,更是在濱河造成了極大的恐慌瞳腌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件镜雨,死亡現(xiàn)場離奇詭異嫂侍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)荚坞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門挑宠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颓影,你說我怎么就攤上這事各淀。” “怎么了诡挂?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵碎浇,是天一觀的道長。 經(jīng)常有香客問我璃俗,道長奴璃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任城豁,我火速辦了婚禮苟穆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘唱星。我一直安慰自己雳旅,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布间聊。 她就那樣靜靜地躺著岭辣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪甸饱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機(jī)與錄音叹话,去河邊找鬼偷遗。 笑死,一個胖子當(dāng)著我的面吹牛驼壶,可吹牛的內(nèi)容都是我干的氏豌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼热凹,長吁一口氣:“原來是場噩夢啊……” “哼泵喘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起般妙,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤纪铺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后碟渺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鲜锚,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年苫拍,在試婚紗的時候發(fā)現(xiàn)自己被綠了芜繁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡绒极,死狀恐怖骏令,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情垄提,我是刑警寧澤榔袋,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站塔淤,受9級特大地震影響摘昌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜高蜂,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一聪黎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧备恤,春花似錦稿饰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惭笑,卻和暖如春侣姆,著一層夾襖步出監(jiān)牢的瞬間生真,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工捺宗, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留柱蟀,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓蚜厉,卻偏偏與公主長得像长已,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子昼牛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理术瓮,服務(wù)發(fā)現(xiàn),斷路器贰健,智...
    卡卡羅2017閱讀 134,628評論 18 139
  • 國內(nèi)可以使用淘寶鏡像的 cnpm mac系統(tǒng)使用-g全局安裝的時候胞四,需要在前面加 sudo npm xxxx下面示...
    奔跑在春風(fēng)里閱讀 284評論 0 0
  • 什么是 NPM npm之于Node,就像pip之于Python,gem之于Ruby,composer之于PHP霎烙。 ...
    ihoey閱讀 6,249評論 2 36
  • 描述 npm從以下來源獲取配置值撬讽,按優(yōu)先級排序: 命令行標(biāo)記 在命令行上放置--foo bar設(shè)置foo配置參數(shù)為...
    竹天亮閱讀 44,100評論 0 8
  • 各位觀眾老爺大家好,歡迎大家收看由我給大家講解的web前端大講堂悬垃,今天給大家分享的是一個關(guān)于數(shù)據(jù)圖顯示的插件游昼。那就...
    5034af144007閱讀 400評論 0 1