簡(jiǎn)介
npm,全稱【node package management】冀泻,是nodeJS內(nèi)置的軟件包管理器,用來管理軟件包
安裝
npm跟nodeJS一起安裝,當(dāng)電腦安裝nodeJS后缩挑,就包含npm,nodeJS下載
以window為例鬓梅,nodeJS提供了兩種安裝包供置,msi是微軟安裝包,zip是壓縮包绽快。msi屬于傻瓜式安裝芥丧,一直下一步即可。zip需要自行配置環(huán)境變量
鏡像
安裝完npm之后坊罢,就可以使用npm安裝第三方庫(kù)续担,但是npm服務(wù)器在國(guó)外,下載緩慢活孩,淘寶有一個(gè)npm鏡像物遇,和npm功能相同,同步國(guó)外服務(wù)器第三方庫(kù)
安裝方式一
# 設(shè)置淘寶鏡像
npm config set registry https://registry.npm.taobao.org
# 檢測(cè)是否配置成功(輸出https://registry.npm.taobao.org表示成功)
npm config get registry
# 此時(shí)用npm安裝第三方庫(kù)時(shí)诱鞠,已經(jīng)是從國(guó)內(nèi)下載
npm i -D jQuery
安裝方式二:使用cnpm替代npm(不建議)
# 設(shè)置cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
# 使用
cnpm cnpm i -D jQuery
package.json
npm配置文件挎挖,包含當(dāng)前項(xiàng)目(或模塊)所依賴的第三方庫(kù)
{
"name": "myapp",
"version": "1.0.0",
"description": "",
"main": "index.js",
"directories": {
"lib": "lib"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
創(chuàng)建package.json(不加-y可手動(dòng)輸入一些信息,-y表示一切取默認(rèn)值)
npm init -y
屬性 | 解釋 |
---|---|
name | 包名 |
description | 包簡(jiǎn)介航夺。通常會(huì)顯示在一些列表中 |
version | 版本號(hào)蕉朵。一個(gè)語義化的版本號(hào) |
keywords | 關(guān)鍵字?jǐn)?shù)組。用于NPM中的分類搜索 |
maintainers | 包維護(hù)者的數(shù)組阳掐。數(shù)組元素是一個(gè)包含name始衅、email冷蚂、web三個(gè)屬性的JSON對(duì)象 |
contributors | 包貢獻(xiàn)者的數(shù)組。第一個(gè)就是包的作者本人 |
bugs | 一個(gè)可以提交bug的URL地址汛闸◎瑁可以是郵件地址(mailto:mailxx@domain) |
licenses | 包所使用的許可證 |
repositories | 托管源代碼的地址數(shù)組 |
dependencies | 當(dāng)前包需要的依賴。這個(gè)屬性十分重要诸老,NPM會(huì)通過這個(gè)屬性隆夯,幫你自動(dòng)加載依賴的包 |
開發(fā)依賴(devDependencies):一般是開發(fā)時(shí)需要的環(huán)境,比如webpack别伏,gulp蹄衷,ejs等
# 標(biāo)準(zhǔn)寫法
npm install --save-dev gulp
# --save-dev可以簡(jiǎn)寫為-D
npm install -D gulp
# install可以簡(jiǎn)寫為i
npm i -D gulp
運(yùn)行依賴(dependencies):上線時(shí)會(huì)被一起打包帶走的組件,模塊等厘肮,比如jQuery, bcrypt, colorui等
# 標(biāo)準(zhǔn)寫法
npm install --save-prod jQuery
# 簡(jiǎn)寫
npm install -P jQuery
# 簡(jiǎn)寫
npm i -P jQuery
# 舊寫法
npm i -S jQuery
全局:會(huì)被安裝成命令行工具愧口,任意目錄均可使用,比如babel类茂,webpack耍属,gulp等
# 標(biāo)準(zhǔn)寫法
npm install webpack -global
# 簡(jiǎn)寫
npm install webpack -g
# 簡(jiǎn)寫
npm i webpack -g
其他常用命令
# 更新npm
npm i npm
# 更新安裝包
npm update -g gulp
# 卸載安裝包(不建議,直接使用不如刪除node_modules再下載快)
npm uninstall --save-prod lodash
# 簡(jiǎn)寫
npm un -P lodash
# 列出包
npm list
# 安裝依賴
cnpm install
package-lock.json
package-lock.json是npm5以后的功能巩检,作用是為了統(tǒng)一版本
使用package.json存在一個(gè)問題:配置默認(rèn)版本的結(jié)構(gòu)為^3.9.1,版本依次為主版本厚骗,副版本,修訂號(hào)
npm install時(shí)碴巾,主版本不變溯捆,副版本和修訂號(hào)可以修改取最新,也就是說厦瓢,^3.9.1使用npm install有可能裝的版本為^3.12.5
有些個(gè)人開發(fā)的包并不一定會(huì)遵守開發(fā)規(guī)范提揍,比如^3.9.1有大更新,結(jié)果版本號(hào)設(shè)置成^3.10.1煮仇,那么npm install以后劳跃,很有可能用不了
當(dāng)有package-lock.json存在時(shí),版本嚴(yán)格按照當(dāng)時(shí)安裝的版本進(jìn)行安裝浙垫,也就是^3.9.1有更新刨仑,安裝依然是^3.9.1的版本
除了^關(guān)鍵字以外,還有一些其他的關(guān)鍵字
~3.9.1表示安裝時(shí)主副版本都不能變夹姥,修訂號(hào)可以變
*3.9.1表示安裝時(shí)都可以變
安裝指定版本
# 安裝指定版本杉武,可指明主,副(可選)辙售,修訂號(hào)(可選)
npm i jQuery@1
# 安裝最新(不寫時(shí)默認(rèn)安裝最新)
npm i jQuery@latest
# 范圍安裝
npm install jQuery@">=1.7.5 <1.12.0"
發(fā)布包
包管理都需要符合CommonJS規(guī)范
1轻抱、一個(gè)package.json文件存在頂級(jí)目錄下
2、二進(jìn)制文件應(yīng)該包含在bin目錄下
3旦部、JS代碼應(yīng)該包含在lib目錄下
4祈搜、文檔應(yīng)該包含在doc目錄下
5较店、單元測(cè)試應(yīng)包含在test目錄下
yarn
yarn就是為了解決npm包管理版本存在的問題出現(xiàn)的,yarn的緩存機(jī)制比npm下載更快容燕,推薦實(shí)現(xiàn)yarn安裝第三方庫(kù)梁呈。筆記下回記錄