package.json文件

一、node_modules文件夹的问题

文件夹以及文件过多过碎,当我们将项目整体拷贝给别人的时候,,传输速度会很慢很慢.
复杂的模块依赖关系需要被记录,确保模块的版本和当前保持一致,否则会导致当前项目运行报错

二、package.json文件的作用

项目描述文件,记录了当前项目信息,例如项目名称、版本、作者、github地址、当前项目依赖了哪些第三方模块等。使用npm安装第三方模块是模块的相关信息会自动添加到package.json文件中。

使用npm init -y (y 就是 yes 的意思)命令生成。

详细情况:

{ //项目名称"name": "description",//项目的版本"version": "1.0.0",//项目的描述"description": "在这里可以快速了解当前项目的功能及作用",//项目的主入口文件,在模块化项目中都会有一个主模块,main 里面填写的就是主模块的入口文件"main": "index.js",//定义命令别名,当命令很长时可以使用别名替换//使用方法:npm run 别名"scripts": {"test": "echo \"Error: no test specified\" && exit 1","build": "nodemon app.js"},//关键字,它允许我们使用关键字去描述当前的项目"keywords": [],//项目的作者"author": "",//项目遵循的协议,默认是ISC也就是开放源代码的协议"license": "ISC",//项目依赖所需要的第三方模块(包)"dependencies": {"formidable": "^1.2.1","mime": "^2.3.1"},//开发依赖所需要的第三方模块(包)"devDependencies": {"gulp": "^3.9.1"}
}

三、项目依赖

在项目的开发阶段和线上运营阶段,都需要依赖的第三方包,称为项目依赖
使用npm install 包名命令下载的文件会默认被添加到 package.json 文件的 dependencies 字段中

 {"dependencies": {"jquery": "^3.3.1“}}

五、开发依赖

在项目的开发阶段需要依赖,线上运营阶段不需要依赖的第三方包,称为开发依赖。
使用npm install 包名 --save-dev命令将包添加到package.json文件的devDependencies字段中,以此来区分项目依赖。

 {"devDependencies": {"gulp": "^3.9.1“}}

npm install 会安装所有依赖包,也就是开发依赖。
npm install --production 只会安装项目依赖所需要的包。这样就实现了按需安装。

六、package-lock.json文件的作用

在生成package.json文件的同时,还会生成一个package-lock.json文件。
作用如下:

  1. 锁定包的版本,确保再次下载时不会因为包版本不同而产生问题
  2. 加快下载速度,因为该文件中已经记录了项目所依赖第三方包的树状结构和包的下载地址,重新安装时只需下载即可,不需要做额外的工作

相关代码示例:

{"name": "description","version": "1.0.0","lockfileVersion": 1,"requires": true,"dependencies": {"ansi-gray": {//包版本,及其下载地址"version": "0.1.1","resolved": "http://registry.npm.taobao.org/ansi-gray/download/ansi-gray-0.1.1.tgz","integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=","dev": true,"requires": {"ansi-wrap": "0.1.0"}}

七、Node.js中模块加载机制

(1) 模块查找规则-当模块拥有路径但没有后缀时

如:

require('./find.js');
require('./find');
  1. require方法根据模块路径查找模块,如果是完整路径,直接引入模块。
  2. 如果模块后缀省略,先找同名JS文件再找同名JS文件夹
  3. 如果找到了同名文件夹,找文件夹中的index.js
  4. 如果文件夹中没有index.js就会去当前文件夹中的package.json文件中查找main选项中的入口文件
  5. 如果找指定的入口文件不存在或者没有指定入口文件就会报错,模块没有被找到
(2) 模块查找规则-当模块没有路径且没有后缀时

如:

require('find');
  1. Node.js会假设它是系统模块
  2. Node.js会去node_modules文件夹中
  3. 首先看是否有该名字的JS文件
  4. 再看是否有该名字的文件夹
  5. 如果是文件夹看里面是否有index.js
  6. 如果没有index.js查看该文件夹中的package.json中的main选项确定模块入口文件
  7. 否则找不到报错

package.json文件是个什么东东?相关推荐

  1. npm package.json文件中的依赖关系,devDependencies和peerDependencies之间有什么区别?

    本文翻译自:What's the difference between dependencies, devDependencies and peerDependencies in npm packag ...

  2. npm package.json文件解读

    每个Nodejs项目的根目录下面,一般都会有一个package.json文件.该文件可以由npm init生成,定义了项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据). pa ...

  3. package.json文件||项目依赖||开发依赖

    package.json文件 node_modules文件夹的问题 package.json文件的作用 项目描述文件,记录了当前项目信息,例如项目名称.版本.作者.github地址.当前项目依赖了哪些 ...

  4. node.js 中的package.json文件怎么创建?

    最近在用webstorm和nodejs做一些东西,老是各种混乱,今天上午创建一个新的项目,结果发现,npm init之后,并没有出现package.json,并没有太明确他的功能的小姑娘表示十分的惊慌 ...

  5. 大前端快闪:package.json文件知多少?

    最近在公司某项目参与了一些前端工作,作为后端抠脚大汉,改点前端细节磕磕绊绊,改点大前端.工程化.HTTP交互倒也还能做到柳暗花明. 于是打算用后端程序猿的视角记录一些{大前端}的知识快闪,也算是帮助读 ...

  6. npm error enoent:no such file or directory...are-we-there-yet ; package.json文件和node_modules模相互转化

    vue-cli项目一段时间没有变动,几个星期后继续编辑安装 npm install vue-skeleton-webpack-plugin 插件时报错 npm error  enoent:no suc ...

  7. npm package.json 文件基础知识

    前言:package.json文件是Node.js生态系统的核心,是了解和使用Node.js,npm甚至现代JavaScript的基本部分. 它是应用程序.模块.npm引入包等的清单. name 是p ...

  8. 有没有办法为Node.js项目自动构建package.json文件

    本文翻译自:Is there a way to automatically build the package.json file for Node.js projects Is package.js ...

  9. vue run dev报错 缺少package.json文件、missing dev 命令 解决办法

    新建好一个vue项目后,终端执行npm run dev 报了两个错 1.缺少package.json文件 解决办法:执行 npm init -y 生成一个新的package.json 2.missin ...

最新文章

  1. ASP.NET 2.0在SQL Server 2005上自定义分页
  2. python基础 while循环练习
  3. 极致流畅体验的密码:网易云信 QoS 策略介绍 | 体验共享技术专题
  4. pandas将表中的字符串转成数值型
  5. 转:asp.net 负载平衡-Session相关
  6. java毕业设计宠物店管理系统源码+系统+数据库+lw文档+调试运行
  7. C# 从控件 sender 操作当前控件
  8. 华为S5720S重置密码
  9. 模糊测试工具Sulley开发指南(2)——与Peach比较
  10. 如何从基层人员变成一名中层领导
  11. 兔老大的系统设计(一)健康度系统
  12. 中国科学研成都计算机,中国科学院成都分院
  13. 【阅读论文】第五章--分割微动脉瘤--博-自动化眼底图像分析技术可筛查糖尿病患者的视网膜疾病
  14. js实现自定义title提示效果
  15. 英国霍克(HAWKER)叉车蓄电池-中国
  16. 2022年上海市徐汇区创新型中小企业名单公示
  17. CPP_Basic_Code_P6.1-PP6.11.9
  18. fiddler stave插件
  19. 百宝云语法变量与常量新手教程
  20. Tensorflow之人脸识别

热门文章

  1. 假如我是超级内卷王。。。
  2. Twincat学习笔记 一 电机控制
  3. 临沂一中高考2021成绩查询,2021年临沂高考状元名单公布 今年临沂高考状元是谁资料和分数...
  4. java祖玛_Canvas小练习_祖玛游戏01
  5. cf1527 c Sequence Pair Weight
  6. 美国姑娘项美丽与邵洵美的跨国恋
  7. android手游sdk开发教程,Android SDK开发基本教程
  8. 微信小程序入门与实战之更多电影列表与电影搜索
  9. ios客户端跟h5页面桥接
  10. vscode进行对html的配置及调试