Node.js 如何管理项目中的包
Node.js 是一个基于V8引擎构建的开源跨平台后端JavaScript运行环境,可以在浏览器之外执行JavaScript代码。在Node.js项目中工作时,您可能会编写代码来实现特定功能或解决特定问题。有些代码片段可以在类似的情况下重复使用。
模块 是由JavaScript函数和对象组成的可重用代码块,根据功能与外部应用程序进行通信。一个 包 经常与模块混淆,但它只是一组模块(库)。假设您正在设计一辆汽车,您可以尝试自己制造汽车的每一个零部件,从挖掘金属到熔铸和其他所有流程。然而,这将花费很多时间并且相当昂贵。相反,我们将购买预先构建的零部件并将它们组装成一辆工作的汽车。同样,您可以根据自己的需求集成另一个开发者的可重用代码到您的项目中。让我们看看如何使用另一个开发者创建的包并管理它们。这一切都始于 NPM 。
NPM代表Node Package Manager(节点包管理器)。它是Node JavaScript平台的一个包管理器,它包含一个名为npm注册表的在线包数据库,允许全球开发者发布和共享他们的代码。
NPM有三个基本组成部分:
- 您可以在 网站 上找到第三方的包,设置配置文件并对其进行管理。
- NPM CLI 是一个命令行接口,允许您从终端与NPM进行交互。
- 注册表 ——JavaScript代码共享的中心。
开发人员 A 可以在 NPM注册中心 共享代码,其他开发人员 B 、 C 和 D 可以通过安装适当的包来重用该代码。
1. 现在,您可以依赖其他人编写的预编译代码。为此,您必须在设备上安装NPM。NPM软件包与Node.js捆绑在一起。 要集成NPM,请下载Node.js。 一旦您下载了Node.js运行时环境,您可以转到终端。
检查您系统上的当前NPM版本。
2. 通过使用npm,您可以从注册表中安装新的软件包。您的项目可能需要多个软件包。在我们的根项目中,我们有一个 package.json 文件,用于跟踪所有已安装的软件包。 package.json 包含与项目相关的重要元数据,并定义了npm用于安装依赖项、运行脚本和识别软件包入口点的功能属性。
要创建package.json文件,您需要转到项目的根目录并执行以下命令:
当您运行npm init命令时,您将被提示提供关于您的项目的信息,例如:
- 包名称
- 版本
- 测试命令
- Git仓库
- 关键字
- 作者
- 许可证
您可以通过运行以下命令使用默认值:
稍后,您可以修改 package.json 中的默认值。
3. 现在让我们集成一些包。您可以在系统上以本地和全局的方式安装 npm 包。
本地安装: 通过运行以下命令在项目文件夹中安装此包,此包仅可在该文件夹中访问:
Express是一个为Web应用程序提供服务器端逻辑的node.js框架。
全局使用: 该包的函数可从任何目录访问。要全局安装该包,请运行以下命令。
nodemon在检测到文件更改时自动重新启动Node.js应用程序。
4. 在某些情况下,您可能希望安装仅在开发环境中运行的软件包。为此,请运行以下命令。
lodash 是一个 Javascript 库,提供了一些实用函数来使编程更加简单和高效。 除了元数据外,package.json 文件还包含依赖项( dependencies ),这些是应用程序中安装的包。 这是你的项目所依赖的一组函数 。在安装包后,你会注意到一个 package-lock.json 文件 和一个 node_modules 文件夹被创建出来。
5. NPM 将所有包存储在 node_modules 文件夹中。除了安装的包之外,您还可以看到许多其他文件。安装包以使用其他人的代码来使您的项目依赖于该包。这些包反过来又使用了其他包的代码。这些文件夹是您的包依赖的对象。因此,node_modules文件夹被认为是宇宙中最密集的对象。
要将所有已安装包显示为依赖树,请运行 npm list 。
6. 要查看已安装的软件包,请执行以下命令:
要理解package-lock.json文件,首先我们要了解npm如何使用 语义化版本 。每次安装一个包,您都会获得最新的公共发布版本。在package.json的dependencies部分,您会发现每个包都以键值对(“package”:“*1.0.0”)的形式安装,其中包名称后跟版本号。包由不同的作者创建并相互依赖。然而它们是独立更新的,可能导致冲突和错误。因此,NPM包遵循语义化版本,这是一种使用每个数字由点分隔来编号软件版本的系统,以表示主要、次要和修补版本。
在 主要版本 中,您进行了重大且不兼容的API更改。在 次要版本 中,您以向后兼容的方式添加功能,而 修补版本 包括所有错误修复。默认情况下,包版本前缀是 ^(尖角符号) ,它告诉NPM如何处理下一个包更新。它将允许版本的修补和次要更新。
要安装特定版本的包,请运行: