NPM的簡單使用

npm是javascript的包管理工具掀泳,類似java語法當中的maven, gradle, python的pip一忱。常見的使用場景有以下幾種:

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

安裝

npm是和Node.js一起發(fā)布的,只要安裝了Node.js膛薛,npm也安裝好了,可以從Node.js官網(wǎng)
下載對應操作系統(tǒng)的安裝包安裝即可补鼻。 安裝好后哄啄,執(zhí)行如下命令,檢查是否安裝成功风范。

image.png

但是由于npm自身的更新頻率比Node.js高很多咨跌,所以通過上面的命令安裝的npm可能不是最新版本,可以通過下面的命令單獨更新npm

npm install npm@latest -g

使用 npm 命令安裝模塊

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

npm install <Module Name>

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

npm install express

注意

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


image.png

從提示可以看出來硼婿,它會檢查你運行 npm 命令時所在的目錄下有沒有 package.json 這個文件锌半,這是我們可以使用命令初始化一個:

npm init -f

-f表示force的意思,不加這個寇漫,npm會讓你輸入一堆信息刊殉,比如name、version之類州胳,如果只是做做實驗小demo记焊,直接-f,npm幫你初始化package.json栓撞,并填充各種默認值遍膜,省事。

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


image.png

因為我運行命令是在 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 下(運行 npm 命令時所在的目錄)蔫磨,如果沒有 node_modules 目錄,會在當前執(zhí)行 npm 命令的目錄下生成 node_modules 目錄圃伶。
  2. 可以通過 require() 來引入本地安裝的包堤如。全局安裝

全局安裝

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

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

npm install express -g

查看安裝信息

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

npm list -g

使用 package.json

package.json 位于模塊的目錄下搀罢,用于定義包的屬性。我們看一下剛才初始化生成的文件內容:

{
  "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 就不只這么點了榔至。

Package.json 屬性說明

  • name - 包名。
  • version - 包的版本號欺劳。
  • description - 包的描述唧取。
  • homepage - 包的官網(wǎng) url 。
  • author - 包的作者姓名划提。
  • contributors - 包的其他貢獻者姓名枫弟。
  • dependencies - 依賴包列表。如果依賴包沒有安裝腔剂,npm 會自動將依賴包安裝在 node_module 目錄下媒区。
  • repository - 包代碼存放的地方的類型,可以是 git 或 svn掸犬,git 可在 Github 上袜漩。
  • main - main 字段指定了程序的主入口文件,require('moduleName') 就會加載這個文件湾碎。這個字段的默認值是模塊根目錄下面的 index.js宙攻。
  • keywords - 關鍵字

卸載模塊

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

npm uninstall express

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

npm ls

更新模塊

npm update express

搜索模塊

npm search express

創(chuàng)建模塊

創(chuàng)建模塊递惋,package.json 文件是必不可少的。我們可以使用 NPM 生成 package.json 文件溢陪,生成的文件包含了基本的結果萍虽。

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 測試模塊(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 測試模塊(www.runoob.com)",

}

Is this ok? (yes) yes

以上的信息,你需要根據(jù)你自己的情況輸入形真。在最后輸入 "yes" 后會生成 package.json 文件杉编。

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

$ 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>可查看某條命令的詳細幫助下翎,例如npm help install缤言。
  • 在package.json所在目錄下使用npm install . -g可先在本地安裝當前命令行程序宝当,可用于發(fā)布前的本地測試视事。
  • 使用npm update <package>可以把當前目錄下node_modules子目錄里邊的對應模塊更新至最新版本。
  • 使用npm update <package> -g可以把全局安裝的對應命令行程序更新至最新版庆揩。
  • 使用npm cache clear可以清空NPM本地緩存俐东,用于對付使用相同版本號發(fā)布新版本代碼的人。
  • 使用npm unpublish <package>@<version>可以撤銷發(fā)布自己發(fā)布過的某個版本代碼订晌。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末虏辫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子锈拨,更是在濱河造成了極大的恐慌砌庄,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奕枢,死亡現(xiàn)場離奇詭異娄昆,居然都是意外死亡,警方通過查閱死者的電腦和手機缝彬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門萌焰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谷浅,你說我怎么就攤上這事扒俯∧套浚” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵撼玄,是天一觀的道長夺姑。 經(jīng)常有香客問我,道長掌猛,這世上最難降的妖魔是什么瑟幕? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮留潦,結果婚禮上只盹,老公的妹妹穿的比我還像新娘。我一直安慰自己兔院,他們只是感情好殖卑,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坊萝,像睡著了一般孵稽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上十偶,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天菩鲜,我揣著相機與錄音,去河邊找鬼惦积。 笑死接校,一個胖子當著我的面吹牛,可吹牛的內容都是我干的狮崩。 我是一名探鬼主播蛛勉,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼睦柴!你這毒婦竟也來了诽凌?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤坦敌,失蹤者是張志新(化名)和其女友劉穎侣诵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狱窘,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡杜顺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了训柴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哑舒。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖幻馁,靈堂內的尸體忽然破棺而出洗鸵,到底是詐尸還是另有隱情越锈,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布膘滨,位于F島的核電站甘凭,受9級特大地震影響,放射性物質發(fā)生泄漏火邓。R本人自食惡果不足惜丹弱,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铲咨。 院中可真熱鬧躲胳,春花似錦、人聲如沸纤勒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽摇天。三九已至粹湃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泉坐,已是汗流浹背为鳄。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腕让,地道東北人孤钦。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像记某,于是被迫代替她去往敵國和親司训。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344