npm 使用小結(jié)


本文內(nèi)容基于 npm 4.0.5

概述

npm (node package manager)刚梭,即 node 包管理器体捏。這里的 node 包就是指各種 javascript 庫(kù)青伤。

npm 是隨同 Node.js 一起安裝的包管理工具立倍,所以不需要獨(dú)立安裝窄驹。

可以通過查看版本號(hào)來檢測(cè) npm 是否已經(jīng)安裝成功:

npm -v

如果已經(jīng)安裝了npm脓斩,想要升級(jí),只需要一條命令即可:

npm install npm -g

package.json

簡(jiǎn)介

使用 npm 來管理的 javascript 項(xiàng)目一般都有一個(gè)package.json文件义桂。它定義了這個(gè)項(xiàng)目所依賴的各種包找筝,以及項(xiàng)目的配置信息(比如名稱、版本慷吊、依賴等元數(shù)據(jù))袖裕。

package.json 中的內(nèi)容就是 json 形式。

重要字段

  • name - 包名溉瓶。

  • version - 包的版本號(hào)急鳄。

  • description - 包的描述。

  • homepage - 包的官網(wǎng) url 堰酿。

  • author - 包的作者姓名疾宏。

  • contributors - 包的其他貢獻(xiàn)者姓名。

  • dependencies - 指定項(xiàng)目運(yùn)行所依賴的模塊胞锰。

  • devDependencies - 指定項(xiàng)目開發(fā)所依賴的模塊灾锯。

  • repository - 包代碼存放的地方的類型,可以是 git 或 svn嗅榕,git 可在 Github 上顺饮。

  • main - main 字段是一個(gè)模塊ID,它是一個(gè)指向你程序的主要項(xiàng)目凌那。就是說兼雄,如果你包的名字叫 express,然后用戶安裝它帽蝶,然后require("express")赦肋。

  • keywords - 關(guān)鍵字

  • bin - 用來指定各個(gè)內(nèi)部命令對(duì)應(yīng)的可執(zhí)行文件的位置。

  • scripts - 指定了運(yùn)行腳本命令的npm命令行縮寫。

例:一個(gè)完整的package.json

{
  "name": "reactnotes",
  "version": "1.0.0",
  "description": "react 教程",
  "main": "./index.js",
  "dependencies": {
    "react": "^15.4.1",
    "react-dom": "^15.4.1"
  },
  "devDependencies": {
    "webpack-dev-server": "^1.16.2"
  },
  "scripts": {
    "start": "node index.js"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/atlantis1024/ReactNotes.git"
  },
  "author": "victor",
  "license": "Apache-2.0",
  "bugs": {
    "url": "https://github.com/atlantis1024/ReactNotes/issues"
  },
  "homepage": "https://github.com/atlantis1024/ReactNotes#readme"
}

package 版本

上文介紹 package.json 文件中的 dependenciesdevDependencies 字段佃乘,這二者都是 json 數(shù)組囱井。它們的每個(gè) json 子對(duì)象,key 表示包名趣避,value 表示版本庞呕。

npm 允許的版本聲明方式十分多樣。下面將為你介紹一二程帕。

說明

  • version :安裝一個(gè)確定的版本住练,遵循“大版本.次要版本.小版本”的格式規(guī)定。如:1.0.0愁拭。
  • ~version :以 ~1.0.0 來舉例讲逛,表示安裝1.0.x的最新版本(不低于1.0.0)。但是大版本號(hào)和次要版本號(hào)不能變岭埠。
  • ^version :以 ^1.0.0 來舉例盏混,表示安裝1.x.x的最新版本(不低于1.0.0),但是大版本號(hào)不能變枫攀。
  • 1.2.x :表示安裝1.2.x括饶。
  • >、>=来涨、<、<= :可以像數(shù)組比較一樣启盛,使用比較符來限定版本范圍蹦掐。
  • version1 - version2 :相當(dāng)于 >=version1 <=version2.
  • range1 || range2 :版本滿足range1 或 range2 兩個(gè)限定條件中任意一個(gè)即可。
  • tag :一個(gè)指定 tag 對(duì)應(yīng)的版本僵闯。
  • *"" (空字符串):任意版本卧抗。
  • latest :最新版本。
  • http://...file://... :你可以指定http或本地文件路徑下的包作為版本鳖粟。
  • git... :參考下面的“直接將 Git Url 作為依賴包版本”
  • user/repo :參考下面的“直接將 Git Url 作為依賴包版本”

例:下面的版本聲明都是有效的

{ "dependencies" :
  { "foo" : "1.0.0 - 2.9999.9999"
  , "bar" : ">=1.0.2 <2.1.2"
  , "baz" : ">1.0.2 <=2.3.4"
  , "boo" : "2.0.1"
  , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
  , "asd" : "http://asdf.com/asdf.tar.gz"
  , "til" : "~1.2"
  , "elf" : "~1.2.3"
  , "two" : "2.x"
  , "thr" : "3.3.x"
  , "lat" : "latest"
  , "dyl" : "file:../dyl"
  }
}

直接將 Git Url 作為依賴包版本

Git Url形式可以如下:

git://github.com/user/project.git#commit-ish
git+ssh://user@hostname:project.git#commit-ish
git+ssh://user@hostname/project.git#commit-ish
git+http://user@hostname/project/blah.git#commit-ish
git+https://user@hostname/project/blah.git#commit-ish

常用命令

npm 的命令很多社裆,這里,我挑選幾條 npm 中比較重要的命令來介紹向图。

更多詳情可以參考 <u>npm 官方文檔</u>

help

個(gè)人認(rèn)為這是最重要的命令泳秀。對(duì)命令行的用法有問題的時(shí)候,還有什么比查看幫助信息更有用呢榄攀?

查看 npm 命令列表**

npm -h

查看所有命令使用方法

npm -l

查看某條命令詳細(xì)幫助信息

如:要查看 npm install 命令的詳細(xì)幫助信息

  • 查看命令的快捷幫助信息
npm install -h
  • 打開命令的幫助文檔
npm help install

npm init

npm init 用于初始化一個(gè)新的package.json文件嗜傅。

命令格式

npm init [-f|--force|-y|--yes]

說明

執(zhí)行命令后,npm 會(huì)問你一系列問題檩赢,然后在執(zhí)行命令的目錄下創(chuàng)建一個(gè)package.json文件吕嘀。

如果使用 -f / --force-y / --yes ,npm 會(huì)使用默認(rèn)值為你創(chuàng)建 package.json 文件,不再詢問任何問題偶房。

npm install

npm install 用于安裝模塊趁曼。

命令格式

npm install (with no args, in package dir)
npm install [<@scope>/]<name>
npm install [<@scope>/]<name>@<tag>
npm install [<@scope>/]<name>@<version>
npm install [<@scope>/]<name>@<version range>
npm install <tarball file>
npm install <tarball url>
npm install <folder>

alias: npm i
common options: [-S|--save|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [-B|--save-bundle] [--dry-run]

說明

  • npm install (with no args, in package dir)

    默認(rèn)的,將 package.json 中聲明的所有模塊安裝到當(dāng)前路徑下的 node_modules 目錄中棕洋。這稱為本地安裝挡闰。

    如果,加上 -g, --global 參數(shù)拍冠,npm 會(huì)將當(dāng)前包安裝到全局(系統(tǒng)目錄下)尿这,這稱為全局安裝

  • npm install <folder>

    安裝位于文件系統(tǒng)上某文件夾中的包庆杜。

  • npm install <tarball file>

    安裝位于文件系統(tǒng)上的包射众。注意:如果你只想鏈接一個(gè) dev 目錄到你的 npm 根目錄,使用 npm link 更容易做到這一點(diǎn)晃财。

    例:

    npm install ./package.tgz
    
  • npm install <tarball url>

    獲取 url叨橱,然后安裝它。為了區(qū)分此選項(xiàng)和其他選項(xiàng)断盛,參數(shù)必須以“http://”或“https://”開頭罗洗。

    例:

    npm install https://github.com/indexzero/forever/tarball/v0.5.6
    
  • npm install [<@scope>/] [-S|--save|-D|--save-dev|-O|--save-optional]

    例:

    npm install sax
    

    npm install 有3個(gè)可選參數(shù),用于保存或更新主package.json中的包版本:

    • -S, --save:包將被添加到 dependencies钢猛。

    • -D, --save-dev:包將被添加到 devDependencies伙菜。

    • -O, --save-optional:包將被添加到 optionalDependencies

    當(dāng)使用上述任何選項(xiàng)將依賴保存到package.json時(shí)命迈,有兩個(gè)額外的可選標(biāo)志:

    • -E, --save-exact :會(huì)在 package.json 文件指定安裝模塊的確切版本贩绕。
    • -B, --save-bundle : 包也將被添加到bundleDependencies
  • npm install [<@scope>/]<name>@<tag>

    安裝被 tag 引用的包的版本壶愤。如果 tag 不存在于該包的注冊(cè)表數(shù)據(jù)中淑倾,則失敗。
    例:

    npm install sax@latest
    npm install @myorg/mypackage@latest
    
  • npm install [<@scope>/]<name>@<version>

    安裝指定的包的版本征椒。如果版本尚未發(fā)布到注冊(cè)表娇哆,則失敗。

    例:

    npm install sax@0.1.1
    npm install @myorg/privatepackage@1.5.0
    
  • npm install [<@scope>/]<name>@<version range>
    安裝與指定版本范圍相匹配的包版本勃救。

    例:

    npm install sax@">=0.1.0 <0.2.0"
    npm install @myorg/privatepackage@">=0.1.0 <0.2.0"
    

npm uninstall

npm uninstall 用于卸載包碍讨。

命令格式

npm uninstall [<@scope>/]<pkg>[@<version>]... [-S|--save|-D|--save-dev|-O|--save-optional]

aliases: remove, rm, r, un, unlink

說明

在全局模式下(即,在命令中附加-g--global)剪芥,它將當(dāng)前包上下文作為全局包卸載垄开。

npm uninstall 有3個(gè)可選參數(shù),用于保存或更新主 package.json 中的包版本:

  • -S, --save:包將被添加到 dependencies税肪。

  • -D, --save-dev:包將被添加到 devDependencies溉躲。

  • -O, --save-optional:包將被添加到 optionalDependencies榜田。

例:

npm uninstall sax
npm uninstall sax --save
npm uninstall @myorg/privatepackage --save
npm uninstall node-tap --save-dev
npm uninstall dtrace-provider --save-optional

npm update

npm update 用于更新本地安裝的模塊。

命令格式

npm update [-g] [<pkg>...]

aliases: up, upgrade

說明

注:從npm@2.6.1開始锻梳,npm update 僅更新頂級(jí)包箭券。舊版本的 npm 會(huì)遞歸檢查所有的依賴。如果要達(dá)到舊版本的行為疑枯,請(qǐng)使用npm --depth 9999 update辩块。

npm config

npm config 命令用于管理配置文件。

命令格式

npm config set <key> <value> [-g|--global]
npm config get <key>
npm config delete <key>
npm config list
npm config edit
npm get <key>
npm set <key> <value> [-g|--global]

aliases: c

說明

  • npm config set <key> <value> [-g|--global] : 設(shè)置一個(gè)配置參數(shù)荆永。

    例:

    npm config set foo:port 80
    
  • npm config get <key> :獲取一個(gè)配置參數(shù)废亭。

    例:

    npm config get foo:port
    
  • npm config delete <key> :刪除一個(gè)配置參數(shù)。

    例:

    npm config delete foo:port
    
  • npm config list :打印配置參數(shù)列表具钥。

  • npm config edit :直接編輯配置文件豆村。

  • npm get <key>npm config get <key> 的簡(jiǎn)寫。

  • npm set <key> <value> [-g|--global]npm config set <key> <value> [-g|--global] 的簡(jiǎn)寫骂删。

npm publish

npm publish 用于發(fā)布一個(gè)包掌动。

命令格式

npm publish [<tarball>|<folder>] [--tag <tag>] [--access <public|restricted>]

Publishes '.' if no argument supplied
Sets tag 'latest' if no --tag specified

說明

將包發(fā)布到注冊(cè)表,以便可以按名稱安裝宁玫。如果沒有本地 .gitignore.npmignore 文件粗恢,則包括軟件包目錄中的所有文件。如果這兩個(gè)過濾文件都存在時(shí)欧瘪,某個(gè)文件被 .gitignore 忽略眷射,而不被 .npmignore 忽略,則它將被包括佛掖。

npm run

如果在 package.json 文件中的 scripts 字段定義了命令凭迹,就可以使用 npm run 來執(zhí)行腳本命令。

例:

假設(shè) package.json 文件中的 scripts 字段如下定義:

"scripts": {
    "test": "mocha",
    "lint": "eslint lib bin hot scripts",
    "prepublish": "npm run test && npm run lint",
    "start": "node index.js"
}

npm run test :相當(dāng)于執(zhí)行 mocha 命令苦囱。它會(huì)開始執(zhí)行測(cè)試框架 Mocha 。

npm run lint :相當(dāng)于執(zhí)行 eslint lib bin hot scripts 命令脾猛。它會(huì)開始執(zhí)行 eslint 檢查撕彤。

npm run prepublish :相當(dāng)于執(zhí)行 npm run testnpm run lint 兩條命令。現(xiàn)在你了解如何復(fù)合命令了吧猛拴。

npm start :相當(dāng)于執(zhí)行 node index.js 羹铅。Node.js 啟動(dòng)一個(gè)服務(wù)的入口腳本。

參考

npm 官方文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末愉昆,一起剝皮案震驚了整個(gè)濱河市职员,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌跛溉,老刑警劉巖焊切,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扮授,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡专肪,警方通過查閱死者的電腦和手機(jī)刹勃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嚎尤,“玉大人荔仁,你說我怎么就攤上這事⊙克溃” “怎么了乏梁?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)关贵。 經(jīng)常有香客問我遇骑,道長(zhǎng),這世上最難降的妖魔是什么坪哄? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任质蕉,我火速辦了婚禮,結(jié)果婚禮上翩肌,老公的妹妹穿的比我還像新娘模暗。我一直安慰自己,他們只是感情好念祭,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布兑宇。 她就那樣靜靜地躺著,像睡著了一般粱坤。 火紅的嫁衣襯著肌膚如雪隶糕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天站玄,我揣著相機(jī)與錄音枚驻,去河邊找鬼。 笑死株旷,一個(gè)胖子當(dāng)著我的面吹牛再登,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播晾剖,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼锉矢,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了齿尽?” 一聲冷哼從身側(cè)響起沽损,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎循头,沒想到半個(gè)月后绵估,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炎疆,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年壹士,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了磷雇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡躏救,死狀恐怖唯笙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盒使,我是刑警寧澤崩掘,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站少办,受9級(jí)特大地震影響苞慢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜英妓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一挽放、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蔓纠,春花似錦辑畦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至敷燎,卻和暖如春暂筝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背硬贯。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工焕襟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人饭豹。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓胧洒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親墨状。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理菲饼,服務(wù)發(fā)現(xiàn)肾砂,斷路器,智...
    卡卡羅2017閱讀 134,601評(píng)論 18 139
  • 什么是 NPM npm之于Node宏悦,就像pip之于Python,gem之于Ruby,composer之于PHP镐确。 ...
    ihoey閱讀 6,248評(píng)論 2 36
  • npm是什么 NPM的全稱是Node Package Manager包吝,是隨同NodeJS一起安裝的包管理和分發(fā)工具...
    build1024閱讀 7,860評(píng)論 0 9
  • 描述 npm從以下來源獲取配置值,按優(yōu)先級(jí)排序: 命令行標(biāo)記 在命令行上放置--foo bar設(shè)置foo配置參數(shù)為...
    竹天亮閱讀 44,077評(píng)論 0 8
  • 2017.3.20 - 2017.3.31 筆記索引 mongodb數(shù)據(jù)庫(kù)去重 日期數(shù)組編造 同步查詢代碼編寫ht...
    ccminn閱讀 699評(píng)論 0 3