NPM依賴包版本號~和^和*的區(qū)別:
~ 會匹配最近的小版本依賴包坑傅,比如~1.2.3會匹配所有1.2.x版本溜嗜,但是不包括1.3.0
^ 會匹配最新的大版本依賴包,比如^1.2.3會匹配所有1.x.x的包遥巴,包括1.3.0伍玖,但是不包括2.0.0
- 這意味著安裝最新版本的依賴包
推薦使用~,只會修復版本的bug钞艇,比較穩(wěn)定
包與模塊:有package.json文件的文件/目錄就可以是一個包
元數(shù)據(jù):描述自身的數(shù)據(jù)
package.json文件中name與version為必需
2018 年了啄寡,你還是只會 npm install 嗎?
淘寶npm鏡像使用方法
1.臨時使用
npm --registry https://registry.npm.taobao.org install express
2.持久使用
npm config set registry https://registry.npm.taobao.org
使用npm踩過的坑
Windows下的Nodejs npm路徑是Users下appdata,修改路徑方法為
prefix = D:\nodejs\node_global
cache = D:\nodejs\node_global
我們在使用 npm install 安裝模塊的模塊的時候 哩照,一般會使用下面這幾種命令形式:
npm install moduleName # 安裝模塊到項目目錄下
npm install -g moduleName # -g 的意思是將模塊安裝到全局挺物,具體安裝到磁盤哪個位置,要看 npm config prefix 的位置飘弧。
npm install -save moduleName # -save 的意思是將模塊安裝到項目目錄下识藤,并在package文件的dependencies節(jié)點寫入依賴。
npm install -save-dev moduleName # -save-dev 的意思是將模塊安裝到項目目錄下眯牧,并在package文件的devDependencies節(jié)點寫入依賴蹋岩。
那么問題來了,在項目中我們應(yīng)該使用四個命令中的哪個呢学少?這個就要視情況而定了剪个。下面對這四個命令進行對比,看完后你就不再這么問了版确。
npm install moduleName 命令
- 安裝模塊到項目node_modules目錄下扣囊。
- 不會將模塊依賴寫入devDependencies或dependencies 節(jié)點。
- 運行 npm install 初始化項目時不會下載模塊绒疗。
- npm install -g moduleName 命令
全局安裝后可以作為命令行工具使用
- 安裝模塊到全局侵歇,不會在項目node_modules目錄中保存模塊包。
- 不會將模塊依賴寫入devDependencies或dependencies 節(jié)點吓蘑。
- 運行 npm install 初始化項目時不會下載模塊惕虑。
- npm install -save moduleName 命令
npm5以上可以不加坟冲,默認
- 安裝模塊到項目node_modules目錄下。
- 會將模塊依賴寫入dependencies 節(jié)點溃蔫。
- 運行 npm install 初始化項目時健提,會將模塊下載到項目目錄下。
- 運行npm install --production或者注明NODE_ENV變量值為production時伟叛,會自動下載模塊到node_modules目錄中私痹。
- npm install -save-dev moduleName 命令或 -D
- 安裝模塊到項目node_modules目錄下。
- 會將模塊依賴寫入devDependencies 節(jié)點统刮。
- 運行 npm install 初始化項目時紊遵,會將模塊下載到項目目錄下。
- 運行npm install --production或者注明NODE_ENV變量值為production時侥蒙,不會自動下載模塊到node_modules目錄中暗膜。
總結(jié)
devDependencies 節(jié)點下的模塊是我們在開發(fā)時需要用的,比如項目中使用的 gulp 鞭衩,壓縮css桦山、js的模塊。這些模塊在我們的項目部署后是不需要的醋旦,所以我們可以使用 -save-dev 的形式安裝恒水。像 express 這些模塊是項目運行必備的,應(yīng)該安裝在 dependencies 節(jié)點下饲齐,所以我們應(yīng)該使用 -save 的形式安裝钉凌。
npm install packagename 0.0.1
安裝指定版本的模塊
npm init
這個命令會在當前目錄生成一個package.json文件,這個文件中會記錄一些關(guān)于項目的信息捂人,比如:項目的作者御雕,git地址,入口文件滥搭、命令設(shè)置酸纲、項目名稱和版本號等等,一般情況下這個文件是必須要有的瑟匆,方便后續(xù)的項目添加和其他開發(fā)人員的使用闽坡。
npm install packagename --save 或 -S
--save、-S參數(shù)意思是把模塊的版本信息保存到dependencies(生產(chǎn)環(huán)境依賴)中愁溜,即你的package.json文件的dependencies字段中疾嗅;
npm install packagename --save-dev 或 -D
--save-dev 、 -D參數(shù)意思是把模塊版本信息保存到devDependencies(開發(fā)環(huán)境依賴)中冕象,即你的package.json文件的devDependencies字段中代承;
npm install packagename --save-optional 或 -O
--save-optional 、 -O參數(shù)意思是把模塊安裝到optionalDependencies(可選環(huán)境依賴)中渐扮,即你的package.json文件的optionalDependencies字段中论悴。
npm install packagename --save-exact 或 -E
--save-exact 掖棉、 -E參數(shù)的意思是精確的安裝指定版本的模塊,細心的同學會發(fā)現(xiàn)dependencies字段里每個模塊版本號前面的^不見鳥膀估。啊片。。
如果你打開的是別人的項目玖像,這個時候一般是沒有任何依賴包的,但是所有需要的包已在package.json里面寫好了齐饮,這個時候我們就可以使用npm install來安裝所有項目中需要的依賴包了
npm install packagename -g 或 --global
安裝全局的模塊(不加參數(shù)的時候默認安裝本地模塊)
npm list 或 npm ll 或 npm la 或 npm ls
查看所有已經(jīng)安裝的模塊 ll 捐寥、 ls 、 la 三個命令意思都一樣 但是列表的展示方式不一樣 喜歡用哪個就看個人喜好了,不懂的同學可以每個都去試下祖驱。
npm uninstall packagename [options]
卸載已經(jīng)安裝的模塊握恳,后面的options參數(shù)意思與安裝時候的意思一樣,與這個命令相同的還有npm remove 、npm rm捺僻、npm r 乡洼、 npm un 、 npm unlink 這幾個命令功能和npm uninstall基本一樣匕坯,個人覺得沒什么區(qū)別束昵。
npm outdated
這個命令會列出所有已經(jīng)過時了的模塊,對于已經(jīng)過時了的模塊可以使用下面的命令去更新
npm update [-g]
更新已經(jīng)安裝的模塊(或全局的模塊)
npm help '命令'
查看某條命令的詳細幫助
npm root
查看命令的絕對路徑
npm config
設(shè)置npm命令的配置路徑葛峻,這個命令一般用于設(shè)置代理锹雏,畢竟大部分都是國外的模塊,不過個人還是比較喜歡用cnpm 這個命令是用的淘寶的鏡像术奖,用法與npm一樣礁遵,速度還可以。
除去以上的這些命令外采记,經(jīng)常還能見到一些npm start佣耐、npm deploy、 npm build等等之類的命令唧龄,這些一般都是在package.json 中自定義的一些啟動兼砖、重啟、停止服務(wù)之類的命令既棺∫从悖可以在package.json文件的scripts字段里自定義。例如:
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"build": "webpack",
"start": "webpack-dev-server main.js,
"deploy": "set NODE_ENV=production"
}
npm緩存命令
npm cache 提供了三個命令援制,分別是npm cache add
, npm cache clean
, npm cache verify
戏挡。
npm cache add
官方解釋說這個命令主要是 npm 內(nèi)部使用,但是也可以用來手動給一個指定的 package 添加緩存晨仑。(This command is primarily intended to be used internally by npm, but it can provide a way to add data to the local installation cache explicitly.)
npm cache clean
刪除緩存目錄下的所有數(shù)據(jù)褐墅。從 npm@5 開始拆檬,為了保證緩存數(shù)據(jù)的有效性和完整性,需要加上 --force
參數(shù)妥凳。
npm cache verify
驗證緩存數(shù)據(jù)的有效性和完整性竟贯,清理垃圾數(shù)據(jù)。
npm 的緩存是使用 pacote 模塊進行下載和管理逝钥,基于 cacache 緩存存儲屑那。由于 npm 會維護緩存數(shù)據(jù)的完整性,一旦數(shù)據(jù)發(fā)生錯誤艘款,就回重新獲取持际。因此不推薦手動清理緩存,除非需要釋放磁盤空間哗咆,這也是要強制加上 --force
參數(shù)的原因
npm離線安裝
npm 提供了離線安裝模式蜘欲,使用 --offline, --prefer-offline, --prefer-online 可以指定離線模式。
--prefer-offline / --prefer-online
“離線優(yōu)先/網(wǎng)絡(luò)優(yōu)先”模式晌柬。
如果設(shè)置為--prefer-offline
則優(yōu)先使用緩存數(shù)據(jù)姥份,如果沒有匹配的緩存數(shù)據(jù),則從遠程倉庫下載年碘。
如果設(shè)置為--prefer-online
則優(yōu)先使用網(wǎng)絡(luò)數(shù)據(jù)澈歉,忽略緩存數(shù)據(jù),這種模式可以及時獲取最新的模塊屿衅。
--offline
完全離線模式闷祥,安裝過程不需要網(wǎng)絡(luò),直接使用匹配的緩存數(shù)據(jù)傲诵,一旦緩存數(shù)據(jù)不存在凯砍,則安裝失敗。
yarn global
不像 npm , 全局操作在使用 -g 或者 --global 標志的命令的時候執(zhí)行拴竹,Yarn 命令需要帶有 global 前綴悟衩。跟 npm 一樣,特定項目的依賴不需要全局安裝栓拜。
global 前綴只對 yarn add, yarn bin座泳,yarn ls 和 yara remove 有效。除了 yarn add幕与,這些命令跟 npm 的是等價的挑势。
yarn緩存命令
yarn cache 提供了三個命令,分別是yarn cache ls
, yarn cache dir
, yarn cache clean
啦鸣。
yarn cache ls
列出當前緩存的包列表潮饱。
yarn cache dir
顯示緩存數(shù)據(jù)的目錄。
yarn cache clean
清除所有緩存數(shù)據(jù)诫给。