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í)行如下命令樟结,檢查是否安裝成功。
但是由于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)以下警告:
從提示可以看出來,它會(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了。
因?yàn)槲疫\(yùn)行命令是在 D:\node\nodeNpm 下捂寿,所以生成的文件就在它里面
安裝好之后口四,express 包就放在了工程目錄下的 node_modules 目錄中,因此在代碼中只需要通過 require('express') 的方式就好秦陋,無需指定第三方包路徑蔓彩。
var express = require('express');
全局安裝與本地安裝
npm 的包安裝分為本地安裝(local)、全局安裝(global)兩種,從敲的命令行來看赤嚼,差別只是有沒有-g而已旷赖,比如
npm install express # 本地安裝
npm install express -g # 全局安裝
上面一部分介紹的就是本地安裝。
本地安裝
- 將安裝包放在 ./node_modules 下(運(yùn)行 npm 命令時(shí)所在的目錄)更卒,如果沒有 node_modules 目錄等孵,會(huì)在當(dāng)前執(zhí)行 npm 命令的目錄下生成 node_modules 目錄。
- 可以通過 require() 來引入本地安裝的包逞壁。全局安裝
全局安裝
- 將安裝包放在 /usr/local 下或者你 node 的安裝目錄流济。
- 可以直接在命令行里使用。
接下來我們使用全局方式安裝 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