npm 是干什么的?

網(wǎng)上的 npm 教程主要都在講怎么安裝臣镣、配置和使用 npm 谣膳,卻很少告訴新人「npm 是干什么的?」「為什么要使用 npm何吝?」溉委。今天我就來講講這個話題。本文目標讀者是「不太了解 npm 的新人」爱榕,老司機請繞道瓣喊。


社區(qū)

程序員自古以來就有社區(qū)文化。社區(qū)的意思是:擁有共同職業(yè)或興趣的人們黔酥,自發(fā)組織在一起藻三,通過分享信息和資源進行合作。虛擬社區(qū)的參與者經(jīng)常會在線討論相關話題跪者,或訪問某些網(wǎng)站棵帽。 前端程序員也有社區(qū),世界上最大的前端社區(qū)應該就是 GitHub 了渣玲。前端通過 GitHub 來分享源代碼(線上代碼倉庫)逗概,討論問題(Issue 列表),收集學習資源和常去的網(wǎng)站(比如我收集的優(yōu)質中文前端博客)忘衍。加入社區(qū)最大的好處之一是逾苫,你可以使用別人貢獻的代碼卿城,你也可以貢獻代碼給別人用。


共享代碼

前端是怎么共享代碼的呢铅搓?在 GitHub 還沒有興起的年代瑟押,前端是通過網(wǎng)址來共享代碼。比如你想使用 jQuery 星掰,那么你點擊 jQuery 網(wǎng)站上提供的鏈接就可以下 jQuery 多望,放到自己的網(wǎng)站上使用 。GItHub 興起之后氢烘,社區(qū)中也有人使用 GitHub 的下載功能便斥。


麻煩

當一個項目依賴的代碼越來越多,程序員發(fā)現(xiàn)這是一件很麻煩的事情:
1.去 jQuery 官網(wǎng)下載 jQuery
2.去 BootStrap 官網(wǎng)下載 BootStrap
3.去 Underscore 官網(wǎng)下載 Underscore
......
有些程序員就受不鳥了威始,一個擁有三大美德的程序員 Isaac Z. Schlueter (以下簡稱 Isaaz)給出了一個解決方案:用一個工具把這些代碼集中到一起來管理吧!這個工具就是他用 JavaScript (運行在 Node.js 上)寫的 npm像街,全稱是 Node Package Manager黎棠。

npm的思路大概是這樣的:
1.買個服務器作為代碼倉庫(repository),在里面放所有需要被共享的代碼
2.發(fā)郵件通知 jQuery 镰绎、Bootstrap 脓斩、Underscore 的作者使用 npm publish 把代碼提交到 repository 上,分別取名 jquery畴栖、bootstrap 和 underscore(注意大小寫)
3.社區(qū)里的其他人如果想使用這些代碼随静,就把 jquery、bootstrap 和 underscore 寫到 package.json 里吗讶,然后運行 npm install 燎猛,npm 就會幫他們下載代碼
4.下載完的代碼出現(xiàn)在 node_modules 目錄里,就可以隨意使用了照皆。

這些可以被使用的代碼被叫做「包」(package)重绷,這就是 npm名字的由來:Node Package(包) Manager(管理器)。


發(fā)展

Isaaz 通知 jQuery 作者 John Resig膜毁,他會答應嗎昭卓?這事兒不一定啊,對不對瘟滨。只有社區(qū)里的人都覺得 「npm 是個寶」的時候候醒,John Resig 才會考慮使用 npm。

那么 npm 是怎么火的呢杂瘸?
npm 的發(fā)展是跟 node.js 的發(fā)展相輔相成的倒淫。node.js 是由一個在德國工作的美國程序員 Ryan Dahl 寫的。他寫了 node.js胧沫,但是 node.js 缺少一個包管理器昌简,于是他和npm的作者一拍即合占业、抱團取暖,最終 node.js 內(nèi)置了 npm纯赎。

后來的事情大家都知道谦疾,node.js 火了。隨著 node.js 的火爆犬金,大家開始用 npm 來共享 JS 代碼了念恍,于是 jQuery 作者也將 jQuery 發(fā)布到 了 npm 上。所以現(xiàn)在晚顷,你可以使用 npm install jquery 來下載 jQuery 代碼了》寤铮現(xiàn)在用 npm 來分享代碼已經(jīng)成了前端的標配。


后續(xù)

node.js 目前由 Ryan Dahl 當時所在的公司 joyent 繼續(xù)開發(fā)该默。Ryan Dahl 現(xiàn)在已經(jīng)去研究 AI 和機器學習了瞳氓,并且他把 node.js 的維護權交給了 Isaaz。而 Isaaz 維護了一段時間后栓袖,辭職了匣摘,成立了一個公司專門維護 npm 的 repository,公司名叫做 npm 股份有限公司......誰說開源不能賺錢的呀裹刮?音榜??


社區(qū)的力量

回顧前端的發(fā)展史你會發(fā)現(xiàn)捧弃,一般都是社區(qū)里的某個人赠叼,發(fā)布了一份代碼,最終影響前端接下來幾年的走向违霞。比如 jQuery嘴办,比如 node.js,比如 npm买鸽,其實其它語言也是這樣的户辞,所以說,社區(qū)的力量是巨大的癞谒。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末底燎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子弹砚,更是在濱河造成了極大的恐慌双仍,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桌吃,死亡現(xiàn)場離奇詭異朱沃,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門逗物,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搬卒,“玉大人,你說我怎么就攤上這事翎卓∑跹” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵失暴,是天一觀的道長坯门。 經(jīng)常有香客問我,道長逗扒,這世上最難降的妖魔是什么古戴? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮矩肩,結果婚禮上现恼,老公的妹妹穿的比我還像新娘。我一直安慰自己黍檩,他們只是感情好述暂,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著建炫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疼蛾。 梳的紋絲不亂的頭發(fā)上肛跌,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音察郁,去河邊找鬼衍慎。 笑死,一個胖子當著我的面吹牛皮钠,可吹牛的內(nèi)容都是我干的稳捆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼麦轰,長吁一口氣:“原來是場噩夢啊……” “哼乔夯!你這毒婦竟也來了?” 一聲冷哼從身側響起款侵,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤末荐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后新锈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甲脏,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了块请。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娜氏。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖墩新,靈堂內(nèi)的尸體忽然破棺而出贸弥,到底是詐尸還是另有隱情,我是刑警寧澤抖棘,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布茂腥,位于F島的核電站,受9級特大地震影響切省,放射性物質發(fā)生泄漏最岗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一朝捆、第九天 我趴在偏房一處隱蔽的房頂上張望般渡。 院中可真熱鬧,春花似錦芙盘、人聲如沸驯用。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝴乔。三九已至,卻和暖如春驮樊,著一層夾襖步出監(jiān)牢的瞬間薇正,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工囚衔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挖腰,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓练湿,卻偏偏與公主長得像猴仑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子肥哎,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353