npm使用介紹

npm是什么?

npmnode.js的一個(gè)包管理工具姆泻,方便的使用第三方庫(kù)零酪,無(wú)需每次新建一個(gè)項(xiàng)目而導(dǎo)入第三方JS庫(kù),使用npm拇勃,只需執(zhí)行簡(jiǎn)單的命令就可以添加依賴庫(kù)了四苇。跟iOS中的Cocoapods一樣,都是為了方便管理包的方咆。npm主要有以下幾種使用場(chǎng)景:

  • 允許用戶從NPM服務(wù)器下載別人編寫的第三方包到本地使用月腋。
  • 允許用戶從NPM服務(wù)器下載并安裝別人編寫的命令行程序到本地使用。
  • 允許用戶將自己編寫的包或命令行程序上傳到NPM服務(wù)器供別人使用瓣赂。

npm使用

使用npm前需要先進(jìn)行安裝node.js,可以去官網(wǎng)進(jìn)行下載安裝榆骚,安裝完成后,可以在終端使用npm -v命令查看node.js的版本號(hào)煌集。

npm初始化

使用npm進(jìn)行安裝包進(jìn)妓肢,首先需要在項(xiàng)目中進(jìn)行npm初始化,創(chuàng)建一個(gè)package.json的文件苫纤。在終端執(zhí)行npm init,輸入命令后碉钠,然后一步一步進(jìn)行設(shè)置,主要是設(shè)置項(xiàng)目名卷拘,版本號(hào)喊废,項(xiàng)目描述入口文件栗弟,測(cè)試命令污筷,git倉(cāng)庫(kù)地址關(guān)鍵字乍赫,作者颓屑,license等信息,初始化完成后耿焊,創(chuàng)建的package.json如下所示:

{
  "name": "webpack",
  "version": "1.0.0",
  "description": "webpack demo",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

本地安裝

npm初始化完成后揪惦,可以進(jìn)行安裝了,比如需要在項(xiàng)目本地安裝 webpack罗侯,執(zhí)行如下命令進(jìn)行安裝:

npm install --save-dev webpack
  • 本地安裝完成后器腋,將在項(xiàng)目目錄下創(chuàng)建一個(gè)node_modules的目錄,如下所示:
    node_modules.png
  • 安裝完成后钩杰,還將在package.json中的devDependencies節(jié)點(diǎn)下添加包名和對(duì)應(yīng)的版本號(hào)纫塌。
 "devDependencies": {
    "webpack": "^4.41.5"
  }
  • 安裝完成后,可以通過(guò) require() 來(lái)引入本地安裝的包讲弄。

全局安裝

使用全局安裝命令措左,可以將依賴包安裝在/usr/local 下或者 node 的安裝目錄。全局安裝的命令如下所示:

npm install --g webpack
  • 全局安裝完成后避除,可以直接在命令行里使用怎披。

卸載模塊

使用以下命令胸嘁,可以卸載模塊

$ npm uninstall webpack

更新模塊

使用以下命令,可以更新模塊

$ npm update webpack

搜索模塊

使用以下命令凉逛,可以搜索模塊

$ npm search webpack

package.json

介紹完基本的命令后性宏,就來(lái)熟悉下package.json文件,該文件主要用于記錄項(xiàng)目中所用到的模塊状飞,當(dāng)我們從代碼倉(cāng)庫(kù)中拉取一個(gè)項(xiàng)目后毫胜,執(zhí)行npm install命令時(shí),將自動(dòng)讀取package.json文件中所有dependencies信息诬辈,然后根據(jù)dependencies中的信息與node_modules中的模塊進(jìn)行對(duì)比酵使,沒(méi)有的直接下載,已有的將根據(jù)對(duì)應(yīng)的版本號(hào)進(jìn)行檢查更新焙糟。執(zhí)行完npm install命令后凝化,如果項(xiàng)目中沒(méi)有package-lock.json文件,將生成一個(gè)package-lock.json文件。

package-lock.json

package-lock.json文件用于記錄當(dāng)前狀態(tài)下實(shí)際安裝的各個(gè)模塊的具體來(lái)源和版本號(hào)酬荞。如果換了一臺(tái)機(jī)器搓劫,執(zhí)行npm install命令時(shí),將根據(jù)package-lock.json中模塊的版本號(hào)和來(lái)源進(jìn)行安裝混巧,使各機(jī)器上安裝的模塊版本號(hào)保持一致枪向。
package.json 屬性說(shuō)明

  • name - 包名。
  • version - 包的版本號(hào)咧党。
  • description - 包的描述秘蛔。
  • homepage - 包的官網(wǎng) url 。
  • author - 包的作者姓名傍衡。
  • contributors - 包的其他貢獻(xiàn)者姓名深员。
  • dependencies - 項(xiàng)目在生產(chǎn)環(huán)境中依賴的包-install的東西。
  • repository - 包代碼存放的地方的類型蛙埂,可以是 git 或 svn倦畅,git 可在 Github 上。
  • main - main 字段指定了程序的主入口文件绣的,require('moduleName') 就會(huì)加載這個(gè)文件叠赐。這個(gè)字段的默認(rèn)值是模塊根目錄下面的 index.js。
  • keywords - 關(guān)鍵字
  • devDependencies 項(xiàng)目在開(kāi)發(fā)和測(cè)試環(huán)境中依賴的包
  • scripts 用于配置命令信息屡江,拿到一個(gè)項(xiàng)目芭概,不知道執(zhí)行什么 命令時(shí),可以查看scripts中配置的命令惩嘉。

dependencies 與 devDependencies 區(qū)別

  • 概念區(qū)別
    dependencies :包含開(kāi)發(fā)環(huán)境和測(cè)試環(huán)境都會(huì)用到的依賴包罢洲。即是我們生產(chǎn)環(huán)境和開(kāi)發(fā)環(huán)境中都需要的依賴項(xiàng)。比如我們代碼中需要使用的一些第三方庫(kù)文黎,都將放在dependencies中惹苗。比如我們開(kāi)發(fā)用到的vue,react等框架殿较。
    devDependencies :包含僅在測(cè)試環(huán)境中會(huì)用到的包。是我們開(kāi)發(fā)時(shí)用的依賴項(xiàng)鸽粉,主要是一些測(cè)試工具、打包工具抓艳、編譯工具触机,比如webpackbabel玷或,sass`等儡首。
  • 命令區(qū)別
    –save :把依賴包名稱添加到package.json文件dependencies中
    –save-dev :把依賴包名稱添加到package.json文件devDependencies中

版本號(hào)介紹

先來(lái)看下package.json文件中模塊的版本信息,比如^4.41.5這里面的^表示啥了偏友。

"devDependencies": {
    "webpack": "^4.41.5"
  }

npm使用語(yǔ)義版本號(hào)來(lái)管理代碼的蔬胯。語(yǔ)義版本號(hào)分為X.Y.Z三位,分別代表主版本號(hào)位他、次版本號(hào)和補(bǔ)丁版本號(hào)氛濒。當(dāng)代碼變更時(shí),版本號(hào)按以下原則更新鹅髓。

  • 如果只是修復(fù)bug舞竿,需要更新Z位。
  • 如果是新增了功能窿冯,但是向下兼容骗奖,需要更新Y位。
  • 如果有大變動(dòng)醒串,向下不兼容执桌,需要更新X位。

版本符號(hào)

  • 波浪號(hào)+指定版本:比如~4.41.5
    表示安裝4.41.x的最新版本芜赌,但不能低于4.41.5,就是保持主版本號(hào)仰挣、次版本號(hào)不變,補(bǔ)丁版本安裝最新的缠沈。
    插入號(hào) 波浪號(hào)+指定版本:比如^4.41.5
    表示安裝4.x.x的最新版本,但不能低于4.41.5,就是保持主版本號(hào)不變椎木、次版本號(hào)和補(bǔ)丁版本安裝最新的。
    個(gè)人博客
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末博烂,一起剝皮案震驚了整個(gè)濱河市香椎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌禽篱,老刑警劉巖畜伐,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異躺率,居然都是意外死亡玛界,警方通過(guò)查閱死者的電腦和手機(jī)万矾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)慎框,“玉大人良狈,你說(shuō)我怎么就攤上這事”靠荩” “怎么了薪丁?”我有些...
    開(kāi)封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)馅精。 經(jīng)常有香客問(wèn)我严嗜,道長(zhǎng),這世上最難降的妖魔是什么洲敢? 我笑而不...
    開(kāi)封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任漫玄,我火速辦了婚禮,結(jié)果婚禮上压彭,老公的妹妹穿的比我還像新娘睦优。我一直安慰自己,他們只是感情好壮不,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布刨秆。 她就那樣靜靜地躺著,像睡著了一般忆畅。 火紅的嫁衣襯著肌膚如雪衡未。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天家凯,我揣著相機(jī)與錄音缓醋,去河邊找鬼。 笑死绊诲,一個(gè)胖子當(dāng)著我的面吹牛送粱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播掂之,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼抗俄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了世舰?” 一聲冷哼從身側(cè)響起动雹,我...
    開(kāi)封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎跟压,沒(méi)想到半個(gè)月后胰蝠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年茸塞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了躲庄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钾虐,死狀恐怖噪窘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情效扫,我是刑警寧澤倔监,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站荡短,受9級(jí)特大地震影響丐枉,放射性物質(zhì)發(fā)生泄漏哆键。R本人自食惡果不足惜掘托,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望籍嘹。 院中可真熱鬧闪盔,春花似錦、人聲如沸辱士。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)颂碘。三九已至异赫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間头岔,已是汗流浹背塔拳。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留峡竣,地道東北人靠抑。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像适掰,于是被迫代替她去往敵國(guó)和親颂碧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

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

  • NPM是隨同NodeJS一起安裝的包管理工具类浪,能解決NodeJS代碼部署上的很多問(wèn)題载城,常見(jiàn)的使用場(chǎng)景有以下幾種: ...
    街角仰望閱讀 456評(píng)論 0 0
  • NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS代碼部署上的很多問(wèn)題费就,常見(jiàn)的使用場(chǎng)景有以下幾種:允...
    Junting閱讀 906評(píng)論 0 0
  • NPM是隨同NodeJS一起安裝的包管理工具个曙,能解決NodeJS代碼部署上的很多問(wèn)題,常見(jiàn)的使用場(chǎng)景有以下幾種: ...
    Lia代碼豬崽閱讀 2,505評(píng)論 2 5
  • 3-1.npmj介紹和使用場(chǎng)景 NPM是隨同NodeJs一起安裝的包管理工具,能解決NodeJS代碼部署上的很多問(wèn)...
    讀書的魚閱讀 446評(píng)論 0 1
  • “心態(tài)決定一切,即使一切為零猴贰,但只要有了積極樂(lè)觀的心態(tài)就成功了一半对雪。”這是從事教師行業(yè)后最大的感想米绕。 清楚地記得剛...
    禾呈王木木閱讀 529評(píng)論 0 1