NPM的簡(jiǎn)單使用

npm是javascript的包管理工具拌消,類似java語法當(dāng)中的maven, gradle, python的pip笑窜。常見的使用場(chǎng)景有以下幾種:

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

安裝

npm是和Node.js一起發(fā)布的矿瘦,只要安裝了Node.js掐暮,npm也安裝好了蝎抽,可以從Node.js官網(wǎng)
下載對(duì)應(yīng)操作系統(tǒng)的安裝包安裝即可。 安裝好后路克,執(zhí)行如下命令樟结,檢查是否安裝成功。

image.png

但是由于npm自身的更新頻率比Node.js高很多衷戈,所以通過上面的命令安裝的npm可能不是最新版本狭吼,可以通過下面的命令單獨(dú)更新npm

npm install npm@latest -g

使用 npm 命令安裝模塊

npm 安裝 Node.js 模塊語法格式如下:

npm install <Module Name>

我們使用 npm 命令安裝常用的 Node.js web框架模塊 express:

npm install express

注意

直接使用該命令可能會(huì)出現(xiàn)以下警告:


image.png

從提示可以看出來,它會(huì)檢查你運(yùn)行 npm 命令時(shí)所在的目錄下有沒有 package.json 這個(gè)文件殖妇,這是我們可以使用命令初始化一個(gè):

npm init -f

-f表示force的意思刁笙,不加這個(gè),npm會(huì)讓你輸入一堆信息谦趣,比如name疲吸、version之類,如果只是做做實(shí)驗(yàn)小demo前鹅,直接-f摘悴,npm幫你初始化package.json,并填充各種默認(rèn)值舰绘,省事蹂喻。

然后就可以愉快地npm install了。


image.png

因?yàn)槲疫\(yùn)行命令是在 D:\node\nodeNpm 下捂寿,所以生成的文件就在它里面


image.png

安裝好之后口四,express 包就放在了工程目錄下的 node_modules 目錄中,因此在代碼中只需要通過 require('express') 的方式就好秦陋,無需指定第三方包路徑蔓彩。

var express = require('express');

全局安裝與本地安裝

npm 的包安裝分為本地安裝(local)、全局安裝(global)兩種,從敲的命令行來看赤嚼,差別只是有沒有-g而已旷赖,比如

npm install express          # 本地安裝
npm install express -g   # 全局安裝

上面一部分介紹的就是本地安裝。

本地安裝

  1. 將安裝包放在 ./node_modules 下(運(yùn)行 npm 命令時(shí)所在的目錄)更卒,如果沒有 node_modules 目錄等孵,會(huì)在當(dāng)前執(zhí)行 npm 命令的目錄下生成 node_modules 目錄。
  2. 可以通過 require() 來引入本地安裝的包逞壁。全局安裝

全局安裝

  1. 將安裝包放在 /usr/local 下或者你 node 的安裝目錄流济。
  2. 可以直接在命令行里使用。

接下來我們使用全局方式安裝 express

npm install express -g

查看安裝信息

你可以使用以下命令來查看所有安裝的模塊,-g表示查看所有全局安裝的模塊:

npm list -g

使用 package.json

package.json 位于模塊的目錄下腌闯,用于定義包的屬性绳瘟。我們看一下剛才初始化生成的文件內(nèi)容:

{
  "name": "nodeNpm",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "express": "^4.16.3"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

這里的配置是最少的,剛才安裝的express模塊里的package.json 就不只這么點(diǎn)了姿骏。

Package.json 屬性說明

  • name - 包名糖声。
  • version - 包的版本號(hào)。
  • description - 包的描述分瘦。
  • homepage - 包的官網(wǎng) url 蘸泻。
  • author - 包的作者姓名。
  • contributors - 包的其他貢獻(xiàn)者姓名嘲玫。
  • dependencies - 依賴包列表悦施。如果依賴包沒有安裝,npm 會(huì)自動(dòng)將依賴包安裝在 node_module 目錄下去团。
  • repository - 包代碼存放的地方的類型抡诞,可以是 git 或 svn,git 可在 Github 上土陪。
  • main - main 字段指定了程序的主入口文件昼汗,require('moduleName') 就會(huì)加載這個(gè)文件。這個(gè)字段的默認(rèn)值是模塊根目錄下面的 index.js鬼雀。
  • keywords - 關(guān)鍵字

卸載模塊

我們可以使用以下命令來卸載 Node.js 模塊顷窒。

npm uninstall express

卸載后,你可以到 /node_modules/ 目錄下查看包是否還存在源哩,或者使用以下命令查看:

npm ls

更新模塊

npm update express

搜索模塊

npm search express

創(chuàng)建模塊

創(chuàng)建模塊鞋吉,package.json 文件是必不可少的。我們可以使用 NPM 生成 package.json 文件励烦,生成的文件包含了基本的結(jié)果谓着。

npm init

This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (node_modules) runoob                   # 模塊名
version: (1.0.0) 
description: Node.js 測(cè)試模塊(www.runoob.com)  # 描述
entry point: (index.js) 
test command: make test
git repository: https://github.com/runoob/runoob.git  # Github 地址
keywords: 
author: 
license: (ISC) 
About to write to ……/node_modules/package.json:      # 生成地址

{
  "name": "runoob",
  "version": "1.0.0",
  "description": "Node.js 測(cè)試模塊(www.runoob.com)",

}

Is this ok? (yes) yes

以上的信息,你需要根據(jù)你自己的情況輸入崩侠。在最后輸入 "yes" 后會(huì)生成 package.json 文件漆魔。

接下來我們可以使用以下命令在 npm 資源庫中注冊(cè)用戶(使用郵箱注冊(cè)):

$ npm adduser
Username: mcmohd
Password:
Email: (this IS public) mcmohd@gmail.com

接下來我們就用以下命令來發(fā)布模塊:

$ npm publish

如果你以上的步驟都操作正確,你就可以跟其他模塊一樣使用 npm 來安裝却音。

NPM 常用命令

除了上面這些改抡,NPM還提供了很多功能,package.json里也有很多其它有用的字段系瓢“⑾耍可以查看官方文檔

  • NPM提供了很多命令夷陋,例如install和publish欠拾,使用npm help可查看所有命令。
  • 使用npm help <command>可查看某條命令的詳細(xì)幫助骗绕,例如npm help install藐窄。
  • 在package.json所在目錄下使用npm install . -g可先在本地安裝當(dāng)前命令行程序,可用于發(fā)布前的本地測(cè)試酬土。
  • 使用npm update <package>可以把當(dāng)前目錄下node_modules子目錄里邊的對(duì)應(yīng)模塊更新至最新版本荆忍。
  • 使用npm update <package> -g可以把全局安裝的對(duì)應(yīng)命令行程序更新至最新版。
  • 使用npm cache clear可以清空NPM本地緩存撤缴,用于對(duì)付使用相同版本號(hào)發(fā)布新版本代碼的人刹枉。
  • 使用npm unpublish <package>@<version>可以撤銷發(fā)布自己發(fā)布過的某個(gè)版本代碼。

NPM安裝淘寶鏡像

npm install -g cnpm --registry=https;//registry.npm.taobao.org
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末屈呕,一起剝皮案震驚了整個(gè)濱河市微宝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌虎眨,老刑警劉巖蟋软,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異专甩,居然都是意外死亡钟鸵,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門涤躲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來棺耍,“玉大人,你說我怎么就攤上這事种樱∶膳郏” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵嫩挤,是天一觀的道長害幅。 經(jīng)常有香客問我,道長岂昭,這世上最難降的妖魔是什么以现? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上邑遏,老公的妹妹穿的比我還像新娘佣赖。我一直安慰自己,他們只是感情好记盒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布憎蛤。 她就那樣靜靜地躺著,像睡著了一般纪吮。 火紅的嫁衣襯著肌膚如雪俩檬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天碾盟,我揣著相機(jī)與錄音棚辽,去河邊找鬼。 笑死冰肴,一個(gè)胖子當(dāng)著我的面吹牛晚胡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嚼沿,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼估盘,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了骡尽?” 一聲冷哼從身側(cè)響起遣妥,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎攀细,沒想到半個(gè)月后箫踩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谭贪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年境钟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俭识。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡慨削,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出套媚,到底是詐尸還是另有隱情缚态,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布堤瘤,位于F島的核電站玫芦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏本辐。R本人自食惡果不足惜桥帆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一医增、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧老虫,春花似錦调窍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽地梨。三九已至菊卷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宝剖,已是汗流浹背洁闰。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留万细,地道東北人扑眉。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像赖钞,于是被迫代替她去往敵國和親腰素。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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

  • npm是javascript的包管理工具雪营,類似java語法當(dāng)中的maven, gradle, python的pip...
    mxjsxz閱讀 378評(píng)論 0 3
  • 什么是 NPM npm之于Node弓千,就像pip之于Python,gem之于Ruby,composer之于PHP。 ...
    ihoey閱讀 6,250評(píng)論 2 36
  • 1献起、npm是什么洋访? NPM (node package manager),通常稱為node包管理器谴餐。顧名思義姻政,它的...
    徐國軍_plus閱讀 7,066評(píng)論 1 6
  • 2017年12月19日感恩分享第三天 今早伴隨5.30的鬧鈴聲,督促師弟師妹起床出去鍛煉岂嗓,練聲汁展。一切都是相互的,感...
    太陽花_徐嘉閱讀 489評(píng)論 0 0
  • 人的一生厌殉,結(jié)為夫妻就是一種解不開的緣善镰。首先,鍋碗瓢盆交響曲年枕,又是柴米油鹽醬醋茶炫欺,小事不斷,大吵也有熏兄,又恨又愛又難舍...
    春天有詩閱讀 226評(píng)論 0 0