node.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > node.js > npm与package.json的联系

详解npm与package.json之间的联系

作者:一颗冰淇淋

这篇文章主要为大家介绍了npm与package.json之间的联系图文示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

正文

在nodejs编写的脚手架项目中,npm是不可缺少的包管理工具,当使用npm初始化时,会生成package.json文件来对项目进行整体的管理和描述

以下是新建的练习项目中package.json文件,初始化项目之后,安装了axios

配置信息

以上每个配置信息分别对应的含义如下

(1)name * 项目名称 

(2)version * 当前版本号 

(3)description 是描述信息 

(4)main: 'index.js' 表示项目入口

(5)script 用于配置脚本信息 start/stop/test/restart 时, npm run start中的run可以省略

(6)author 作者 (发布时用到) 

(7)license 开源协议 (发布时用到)  

(8)dependencies 依赖 开发环境生产环境都需要

(9)devDependencies 开发时依赖的库, 生产环境不需要使用

package-lock.json文件

以上项目通过 npm install axios 为项目添加了axios,所以在dependencies下添加了aixos,安装的时候除了在node_modules会增加对应的依赖外,在package-lock.json会指明axios具体的版本以及axios内部的依赖,可以看到package-lock.json文件中,axios版本为0.21.1

但,有一点很奇怪,明明我只安装了 axios,为什么 package-lock.json 的dependencies 中还有一个 "follow-redirects",我们找到 node_modules 中安装的包文件,发现确实有axios和follow-redirects,打开axios的package.json文件,可以看到在axios的生产依赖 dependencies 中添加了 "follow-redirects",所以在安装 axios 的时候,自动帮我们安装了它所依赖的包,而 devDependencies 中依赖的包都没有安装,这也验证了一点,devDependencies只会被用于开发中,生产当中是不会安装的

执行 npm install

当我们拿到一个新项目的时候,通常是没有node_modules文件夹的,我们需要自行通过 npm install 来安装所有的依赖,当执行 npm install 的时候具体进行了哪些操作呢?

如图所示,当项目中存在package.json文件执行 npm install 的时候,首先会判断是否存在 package-lock.json 文件,没有 lock 文件的话,会根据 package.json 文件建立依赖关系,然后去存储 npm 各种工具的 registry 库中查找依赖并获取压缩包,此时会将压缩包缓存下来,然后将压缩包添加到 node_modules中,添加到 node_modules 后会生成 package-lock.json 中记录下载的版本和依赖关系。

如果存在 package-lock.json 文件,直接判断packge.json 所需依赖中与lock文件中依赖是否一致,不一致再重新建立依赖关系,一致的时候去缓存中查找缓存文件,没找到缓存文件就自行去 registry 库中下载压缩包。

以上就是详解npm与package.json之间的联系的详细内容,更多关于npm与package.json的联系的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文