广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Node工程的依赖包管理方式
  • 482
分享到

Node工程的依赖包管理方式

Node依赖包管理方式Node工程的依赖包Node依赖包 2023-05-17 08:05:51 482人浏览 泡泡鱼
摘要

目录一、分类管理1、dependencies2、devDependencies3、optionalDependencies4、peerDependencies5、bundledDep

前端工程化中,javascript 依赖包管理是非常重要的一环。依赖包通常是项目所依赖的第三方库、工具框架等资源,它们能够帮助我们减少重复开发、提高效率并且确保项目可以正确的运行。

目前比较常见的前端包管理器有 npm 和 Yarn,npm 是 node.js 自带的包管理器,它可以安装、共享和分发 node.js 模块。最近pnpm也挺火的,通过并行下载和安装依赖项,在执行安装、更新、删除等操作时也更快。

但无论使用哪个包管理器,都要通过 package.JSON 文件的版本控制功能,保证在不同开发环境中的一致性。那么,package.json是如何进行依赖包管理的呢?我们来一起深入了解一下package.json的配置方式。

一、分类管理

根据package.json规范,依赖包被大致分为以下几种:dependencies、devDependencies、optionalDependencies、peerDependencies和bundledDependencies总共5种。dependencies和devDependencies这两项是我们使用较为频繁的。

1、dependencies

工程在生产环境下也需要使用的依赖,例如React、antd等,使用npm安装插件时,会默认写入dependencies,也可以使用-P或--save-prod后缀。

2、devDependencies

工程只有开发环境需要,生产环境不需要的依赖,例如eslint、babel等,使用-D或--save-dev来写入devDependencies。

3、optionalDependencies

顾名思义,依赖是可选的,它们只有在运行时需要使用某些功能时才会被引入。通常用于实现某些可选的功能或优化。例如,一个包可能依赖于某个库来实现某种高级功能,但是这个库在某些环境下不存在或不可用。在这种情况下,可以将该库声明为可选依赖项,并在代码中检查该依赖项是否存在,然后根据情况来决定是否使用该高级功能。使用这个功能的工程比较少,使用-O或--save-optional来写入optionalDependencies。

4、peerDependencies

工程需要和这个依赖配套使用,一般用于解决插件依赖的核心库的版本和主项目依赖的核心库的版本不一致的问题,常见于开发配套插件。例如Vuex@4.1.0声明了:

"peerDependencies": {
   "vue": "^3.2.0"
}

表明vuex@4.1.0需要和vue@^ 3.2.0一起安装和使用,否则可能会出现异常。使用-O或--save-optional来写入optionalDependencies。

5、bundledDependencies

工程依赖于某些特定的依赖项,并且希望在运行时不必再次下载它们,则可以使用该选项。npm pack会将这些依赖一同放入生成的包中,并且在npm install时本工程,这些依赖项也会被一同安装。使用-B或--save-bundle来写入bundledDependencies。

看到这里你可能会有点疑问,为什么npm没有提供类似--save-peer的指令来写入peerDependencies呢?原因是peerDependencies暗示本工程将会被其他主模块使用,但是主模块本身并不需要在项目代码中显式使用。因此官方没有支持这一指令。

二、版本管理

一般情况下,以上依赖配置(除了bundledDependencies)都需要指定依赖的版本号,版本号遵循semver语义化版本规范(Semantic Versioning)命名规则,可以用下图表示,如2.1.0、3.1.4-beta.2等。

  • 当发生不兼容的 api 修改时,更新major位
  • 当做了向下兼容的功能性新增时,更新minor位
  • 当做了向下兼容的问题修正时,更新patch位

可选的-tags即先行版本号,可以作为发布正式版之前的版本,格式是在修订版本号后面加上一个连接号(-),再加上一连串以点(.)分割的标识符,标识符可以由英文、数字和连接号([0-9A-Za-z-])组成。

在 npm 的依赖的规则中,还有~、>、<、=、>=、<=、-、||、x、X、*等符号来描述适用的版本范围;

  • ^ :表示只定major,不小于指定版本号的版本范围。例如^1.1.0,代表>=1.1.0 <2.0.0的版本范围。

  • ~ :表示锁定major和minor,不小于指定版本号的版本号。例如~1.1.0,代表>=1.1.0 <1.2.0的版本范围。

  • x、X、*:表示通配符。例如1.1.x,也代表>=1.1.0 <1.2.0的版本范围。

默认情况下,若指定了一个版本范围,npm会在范围内安装最新版本的依赖。当使用 npm install XX 时,会安装当前最新版本,并在版本号前默认加上 ^ 符号。因此在安装运行老项目时,很容易出现安装依赖后,项目启动报错的情况,原因就是某些依赖没有做到很好的向下兼容,导致重新安装的版本太高造成兼容性错误,此时需要定位错误依赖并回退版本。

三、npm install加载机制

npm install核心流程大致分为以下5步:

1、npm 向 reGIStry 查询依赖压缩包的网址。
2、下载压缩包,存放在cache目录,供下次安装时使用。
3、解压压缩包到当前项目的node_modules目录。
4、把所有安装的包信息写入package-lock.json,供下次安装时使用。
5、继续处理依赖的依赖。

install的过程速度也和每一个步骤息息相关:
(1)共享工程package-lock.json,可以避免向registry查询的步骤,并且保证不同环境下安装包的一致性。
(2)使用下载速度快的registry镜像(例如jd镜像)。
(3)预先进行依赖关系分析构建依赖关系,然后最后再并行下载(例如yarn)。

希望以上的介绍能够帮助你更好的理解npm的依赖管理。

到此这篇关于Node工程的依赖包管理方式的文章就介绍到这了,更多相关Node依赖包管理方式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Node工程的依赖包管理方式

本文链接: https://www.lsjlt.com/news/210906.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Node工程的依赖包管理方式
    目录一、分类管理1、dependencies2、devDependencies3、optionalDependencies4、peerDependencies5、bundledDep...
    99+
    2023-05-17
    Node依赖包管理方式 Node工程的依赖包 Node依赖包
  • 【Maven】依赖管理—导入jar包的三种方式、依赖范围设置
    目录 一、使用坐标导入 jar 包  二、使用坐标导入 jar 包 – 快捷方式  三、使用坐标导入 jar 包 – 自动导入  四、依赖范围 一、使用坐标导入 jar 包 在 pom.xml 中编写 标签 在 标签中 使用 引入坐...
    99+
    2023-09-15
    maven jar java intellij-idea 坐标导入依赖
  • 宝塔Linux面板安装Composer依赖管理工具与PHP依赖包的方法
    最近看见腾讯云有一个AI绘画还挺有意思,想搞来写个接口玩  但是Composer一直运行不成功 提示xdebug什么的 最后经过搜索 发现 需要删除你宝塔里所有php中禁用的putenv函数 然后重启php就可以了!  然后就可以运行这...
    99+
    2023-10-08
    composer php
  • python依赖包管理的方法有哪些
    Python的依赖包管理有以下几种方法:1. Pip:Pip是Python官方推荐的包管理工具,可以通过命令行使用pip来安装、卸载...
    99+
    2023-09-23
    python
  • Python 依赖管理及打包三方库 Poetry
    一、背景 最近python的ui自动化工程中需要调研和选取一个python第三方包的依赖管理工具,近期poetry比较火,就选择了这个新的工具,以下来介绍Python环境管理Poetry的使用。 介绍: Poetry 是 Python ...
    99+
    2023-10-08
    windows python 开发语言
  • PHP依赖管理工具Composer入门教程
    Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。 依赖管理 Composer 不是一个包管理器。是的,它涉及 "packages" 和 "librari...
    99+
    2022-06-03
    Composer Linux PHP Windows 依赖管理 安装 教程
  • Python依赖管理及打包工具Poetry使用规范
    目录啥是依赖规范版本约束^ 约束~ 约束* 约束比较符git 依赖路径依赖url 依赖Python 限制依赖项多个限制使用环境限制扩展依赖规范语法啥是依赖规范 可以以各种形式指定项目...
    99+
    2022-11-12
  • spring项目的依赖包怎么管理
    在Spring项目中,可以使用Maven或者Gradle来管理项目的依赖包。使用Maven管理项目的依赖包:1. 在项目的pom.x...
    99+
    2023-09-21
    spring
  • Android统一依赖管理的三种方式总结
    目录简述传统apply from的方式(也是我以前项目中使用)buildSrc方式什么是buildSrc小结Composing builds什么是Composing builds小结...
    99+
    2022-11-13
  • golang开发go包依赖管理godep使用教程
    目录介绍安装包管理使用 godep拉取依赖 restore 用于开发检出依赖 savegodep 编译运行 buildGodeps目录的作用godep其他命令介绍 godep是解决包...
    99+
    2022-11-12
  • 详解node中的包和包管理工具
    包从哪里来的?不同于 Node.js 中的内置模块与自定义模块,包是由第三方个人或团队开发出来的,免费供所有人使用。 在这里记笔记:免费的!!!为什么我们要用包?由于 Node.js 的内置模块仅提供了一些底层的 API,导致在基于内置模块...
    99+
    2022-11-24
    node Node.js
  • SpringBoot的依赖管理配置方法
    这篇文章主要介绍“SpringBoot的依赖管理配置方法”,在日常操作中,相信很多人在SpringBoot的依赖管理配置方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringBoot的依赖管理配置方法...
    99+
    2023-07-02
  • 关于gradle多模块项目依赖管理方式
    目录gradle多模块项目依赖管理先看一下maven的模块依赖khxt希望可以引入common-code父模块下配置子模块名总结gradle多模块项目依赖管理 在gradle的使...
    99+
    2023-05-15
    gradle多模块项目 gradle依赖管理 gradle依赖
  • Android统一依赖管理的三种方式分别是什么
    这篇文章将为大家详细讲解有关Android统一依赖管理的三种方式分别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。简述每个项目从新建开始我们或多或少都会导入各种依赖库,如果项目中只有一...
    99+
    2023-06-29
  • SpringBoot项目依赖管理的方法是什么
    Spring Boot项目的依赖管理方法有以下几种: Maven:使用Maven作为构建工具,可以在项目的pom.xml文件中定...
    99+
    2023-10-27
    SpringBoot
  • SpringBoot依赖管理和自动装配的方法
    这篇文章主要介绍了SpringBoot依赖管理和自动装配的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot依赖管理和自动装配的方法文章都会有所收获,下面我们一起来看看吧。1.1依赖管理父项...
    99+
    2023-06-29
  • 你应该知道的几类npm依赖包管理详解
    前言 大家都知道在一个Node.js项目中,package.json几乎是一个必须的文件,它的主要作用就是管理项目中所使用到的外部依赖包,同时它也是npm命令的入口文件。下面话不多说了,来一起看看详细的介绍...
    99+
    2022-06-04
    详解 你应该知道 几类
  • node中的包和包管理工具怎么安装使用
    这篇“node中的包和包管理工具怎么安装使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“node中的包和包管理工具怎么安装...
    99+
    2023-07-04
  • 基于NPM的GO语言依赖管理工具有哪些?
    随着Go语言的流行,越来越多的人开始使用它来开发应用程序。但是,与其他语言一样,Go语言也需要管理依赖项。为了解决这个问题,人们开始使用NPM来管理Go语言的依赖项。本文将介绍基于NPM的Go语言依赖管理工具。 dep dep是一个Go...
    99+
    2023-06-21
    响应 容器 npm
  • Golang开发Go依赖管理工具dep安装验证实现过程
    目录Go依赖管理工具环境要求目前版本安装验证初始化默认初始化优先从$GOPATH初始化Gopkg.tomlGopkg.lock常用命令dep ensuredep ensure -ad...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作