node_modules包含什么:gulp本身,gulp依賴的模塊笤闯;
問題:1文件夾過度過碎,導(dǎo)致傳輸速度慢棍厂;2復(fù)雜的模塊依賴關(guān)系需要被記錄颗味,確保模塊版本和當(dāng)前保持一致,否則會導(dǎo)致當(dāng)前項目運(yùn)行報錯牺弹。
package.json文的作用:項目的描述文件浦马,記錄了當(dāng)前項目信息,例如:名稱张漂,版本晶默,作者,github地址鹃锈,當(dāng)前項目依賴的第三方模塊等荤胁,使用npm init -y命令生成瞧预。(一般放在項目的根目錄下)
*傳輸項目時node_modules文件會刪除屎债,接收方在命令行中重新下載。
在Node文件夾下創(chuàng)建description文件夾
命令行工具:法①:C:\Node\description> npm init? ? ? ? // 生成package.json文件
回答問題:一直enter
法②:C:\Node\description> npm init -y? ? ? ? // 生成package.json文件(-y就是yes,使選項都為默認(rèn)值)
package.json文件
{
??"name":?"description",? ? ? ? ? ? ? ? ? ? ? ? ?// 項目的名稱
??"version":?"1.0.0",? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 項目的版本
??"description":?"",? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 項目的描述(快速了解當(dāng)前項目的功能以及作用)
??"main":?"index.js",? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 項目的主模塊文件
??"scripts":?{? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 命令的別名
????"test":?"echo?\"Error:?no?test?specified\"?&&?exit?1"
??},
??"keywords":?[],? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 關(guān)鍵字:描述當(dāng)前的項目
??"author":?"",? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 項目的作者
??"license":?"ISC"? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 項目遵循的協(xié)議(默認(rèn)ISC-開放源代碼協(xié)議)
}
只要package.jsom文件存在垢油,npm install 下載的模塊就會自動記錄到這個文件中盆驹。
開始
命令行工具:C:\Node\description> npm install formidable mime? ?//同時下載2個模塊(空格區(qū)分);?
結(jié)果:
{
??"name":?"description",
??"version":?"1.0.0",
??"description":?"",
??"main":?"index.js",
??"scripts":?{
????"test":?"echo?\"Error:?no?test?specified\"?&&?exit?1"
??},
??"keywords":?[],
??"author":?"",
??"license":?"ISC",
??"dependencies":?{? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 記錄當(dāng)前項目所依賴的第三方模塊
????"formidable":?"^1.2.1",? ? ? ? ? ? ? ? ? ? ?//?formidable 以及版本 ?
????"mime":?"^2.4.4"? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //?mime以及版本
??}
}
==================================================
ps:接收到的文件:沒有node_modules滩愁,只有package.json和package-lock.json;
命令行工具:C:\Node\description> npm install (此時node_modules就又添加了)
==========================================
項目依賴:在項目的開發(fā)階段和線上運(yùn)營階段躯喇,都需依賴第三方包,稱為項目依賴硝枉。
在使用npm install 包名命令下載的文件會默認(rèn)被添加到package.json文件的dependencies字段中廉丽。
例如說在項目中使用了jquery第三方庫文件:
{
? ? ? ? ? ? "dependencies":{
? ? ? ? ? ? ? ? ? ? ? "jquery":"^3.3.1"
? ? ? ? ? ? }
}
如果項目在線上缺少了jquery,那么無法運(yùn)行妻味。
開發(fā)依賴:在項目的開發(fā)階段需要依賴正压,線上運(yùn)營階段不需要依賴的第三方包,稱為開發(fā)依賴责球。
使用npm install 包名--save-dev命令將包添加到package.json文件的devDependencies字段中?
--save-dev作用:把當(dāng)前安裝的第三方模塊焦履,放在devDependencies中拓劝,以此區(qū)分項目依賴和開發(fā)依賴。
{
? ? ? ? ? ? "devDependencies":{
? ? ? ? ? ? ? ? ? ? ? "jquery":"^3.3.1"
? ? ? ? ? ? }
}
例如:glup是開發(fā)依賴
命令行工具:C:\Node\description>npm install gulp --save-dev
此時查看package.json文件:如下
{
??"name":?"description",
??"version":?"1.0.0",
??"description":?"",
??"main":?"index.js",
??"scripts":?{
????"test":?"echo?\"Error:?no?test?specified\"?&&?exit?1"
??},
??"keywords":?[],
??"author":?"",
??"license":?"ISC",
??"dependencies":?{
????"formidable":?"^1.2.1",
????"mime":?"^2.4.4"
??},
??"devDependencies":?{
????"gulp":?"^4.0.2"
??}
}
==============================================
項目依賴和開發(fā)依賴區(qū)分好處:可以讓我們在不同的運(yùn)行環(huán)境下下載不同的依賴嘉裤,比如說當(dāng)前是線下開發(fā)環(huán)境郑临,我們可以用npm install去下載全部的依賴,如果當(dāng)前是屬于線上的運(yùn)營環(huán)境(服務(wù)器環(huán)境下)屑宠,只需要使用npm install --save-dev
開發(fā)環(huán)境:npm install
服務(wù)器環(huán)境:npm install --production? ? ? ? ? ? ? ? // 生產(chǎn)環(huán)境
=========================================
npm如何解決模塊與模塊間互相依賴關(guān)系:package-lock.json
作用:記錄模塊與模塊間的依賴關(guān)系
好處:①防止他人在下載模塊時厢洞,錯誤的下載最新版模塊狞山,導(dǎo)致項目運(yùn)行失敗
②記錄了下載地址碳褒,再下一次下載加速了下載速度,npm不需要分析模塊依賴關(guān)系罗标。
============================================
package.json中scripts的作用:存儲命令的別名,頻繁執(zhí)行的命令比較長時秋柄,就把長的命令寫在scripts選項中:
例如
??"scripts":?{
????"test":?"echo?\"Error:?no?test?specified\"?&&?exit?1"获枝,
? ? "build": "nodemon app.js"
??},
當(dāng)想執(zhí)行nodemon app.js時,使用build別名就可以骇笔;
npm run build
命令行工具:C:\Node\description>npm run build