node_modules包含什么:gulp本身,gulp依赖的模块;
问题:1文件夹过度过碎,导致传输速度慢;2复杂的模块依赖关系需要被记录,确保模块版本和当前保持一致,否则会导致当前项目运行报错。
package.json文的作用:项目的描述文件,记录了当前项目信息,例如:名称,版本,作者,github地址,当前项目依赖的第三方模块等,使用npm init -y命令生成。(一般放在项目的根目录下)
*传输项目时node_modules文件会删除,接收方在命令行中重新下载。
在Node文件夹下创建description文件夹
命令行工具:法①:C:\Node\description> npm init // 生成package.json文件
回答问题:一直enter
法②:C:\Node\description> npm init -y // 生成package.json文件(-y就是yes,使选项都为默认值)
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" // 项目遵循的协议(默认ISC-开放源代码协议)
}
只要package.jsom文件存在,npm install 下载的模块就会自动记录到这个文件中。
开始
命令行工具:C:\Node\description> npm install formidable mime //同时下载2个模块(空格区分);
结果:
{
"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", // formidable 以及版本
"mime": "^2.4.4" // mime以及版本
}
}
==================================================
ps:接收到的文件:没有node_modules,只有package.json和package-lock.json;
命令行工具:C:\Node\description> npm install (此时node_modules就又添加了)
==========================================
项目依赖:在项目的开发阶段和线上运营阶段,都需依赖第三方包,称为项目依赖。
在使用npm install 包名命令下载的文件会默认被添加到package.json文件的dependencies字段中。
例如说在项目中使用了jquery第三方库文件:
{
"dependencies":{
"jquery":"^3.3.1"
}
}
如果项目在线上缺少了jquery,那么无法运行。
开发依赖:在项目的开发阶段需要依赖,线上运营阶段不需要依赖的第三方包,称为开发依赖。
使用npm install 包名--save-dev命令将包添加到package.json文件的devDependencies字段中
--save-dev作用:把当前安装的第三方模块,放在devDependencies中,以此区分项目依赖和开发依赖。
{
"devDependencies":{
"jquery":"^3.3.1"
}
}
例如:glup是开发依赖
命令行工具: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"
}
}
==============================================
项目依赖和开发依赖区分好处:可以让我们在不同的运行环境下下载不同的依赖,比如说当前是线下开发环境,我们可以用npm install去下载全部的依赖,如果当前是属于线上的运营环境(服务器环境下),只需要使用npm install --save-dev
开发环境:npm install
服务器环境:npm install --production // 生产环境
=========================================
npm如何解决模块与模块间互相依赖关系:package-lock.json
作用:记录模块与模块间的依赖关系
好处:①防止他人在下载模块时,错误的下载最新版模块,导致项目运行失败
②记录了下载地址,再下一次下载加速了下载速度,npm不需要分析模块依赖关系。
============================================
package.json中scripts的作用:存储命令的别名,频繁执行的命令比较长时,就把长的命令写在scripts选项中:
例如
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "nodemon app.js"
},
当想执行nodemon app.js时,使用build别名就可以;
npm run build
命令行工具:C:\Node\description>npm run build