软件包管理|npm【前端工具链】

项目中的依赖

依赖是指可能由他人编写的第三方软件,理想情况下能够为你解决单一的问题。
一个 Web 项目可以有任意数量的依赖,从无到多,并且你的依赖里可以包含了你没有明确安装的子依赖(依赖的依赖)。

  • 项目依赖可以是整个 JavaScript 库或框架——例如 React 或者 Vue
  • 也可以是非常小的工具库,比如我们的人类易读日期库
  • 它也可以是一个命令行工具,例如我们之前文章中提到的 Prettier 或 ESLint

如果你发现一个更好的工具来代替当前工具,或者你想更新依赖的新版本,会发生什么?
对于只有几个依赖的项目来说来说,这并不痛苦,但对于具有许多依赖项的大型项目来说,这种事情可能会变得非常具有挑战性。这就需要用到 npm 这样的软件包管理器

软件包管理器

image.png
软件包管理器(Package Manager)是一个用于管理软件包(也就是依赖)的工具,主要负责自动化软件安装、更新、配置和删除等任务。它在软件开发和系统管理中起着重要作用。软件包管理器的作用包括:

  • 自动化安装和更新:软件包管理器可以自动处理软件包的下载、安装和更新,确保软件的版本和依赖关系。
  • 依赖管理:软件包管理器会自动处理依赖关系,确保所有必要的组件都被正确安装。并且可以处理理重复的依赖项。
  • 版本控制:软件包管理器可以管理不同版本的软件包,允许用户轻松地升级或回退到特定版本。
  • 安全性:软件包管理器通常会从受信任的源中下载软件包,并进行校验,确保下载的软件包没有被篡改。
  • 系统一致性:通过软件包管理器安装软件,可以确保系统中的软件包来源和安装方式的一致性,便于管理和维护。
  • 简化配置:有些软件包管理器提供工具来自动配置软件,使用户不需要手动调整配置文件。

常见的软件包管理器包括:

  • pip:用于Python的包管理工具。
  • apt(Advanced Package Tool):用于Debian及其衍生发行版(如Ubuntu)。
  • npm(Node Package Manager):用于Node.js生态。

两种安装方式

在使用包管理工具(如 npm)时,通常有两种安装模式:全局安装和项目安装。了解这两种安装模式的区别及其适用场景非常重要。
全局安装 是将包或工具安装在系统的全局环境中,使其可以在任何地方使用。这种安装方式通常用于命令行工具或需要在多个项目中使用的工具。

  • 安装位置:系统全局环境。
  • 适用工具:命令行工具、需要在多个项目中使用的工具。
    • typescripteslint 等。
  • 优点: 全局安装的包在系统中只安装一次,可以节省磁盘空间和安装时间,特别是对一些大型工具包。
  • 缺点: 全局安装的依赖不包含在项目的依赖列表中,其他开发者在克隆项目后无法自动安装这些全局依赖,影响项目的可移植性。 项目对全局环境有依赖,一旦全局环境发生变化(例如包版本更新),可能会导致项目无法正常运行。

项目安装 是将包或工具安装在特定项目的目录中,使其只对该项目有效。这种安装方式通常用于项目的依赖库,确保项目的环境独立。

  • 安装位置: 包安装在项目的 node_modules 文件夹中,只能在该项目中使用 。
  • 适用工具: 适用于项目的依赖,确保项目的可移植性和独立性。 。
  • 优点: 项目之间的依赖是隔离的,一个项目的依赖不会影响到另一个项目,确保各项目环境的一致性和稳定性。
  • 缺点: 不同项目如果使用相同的依赖,每个项目都会单独安装一份,可能会占用更多的磁盘空间。 并且不同项目如果使用相同的依赖,每个项目都会单独安装一份,可能会占用更多的磁盘空间。

软件包仓库

软件包仓库是存储和分发软件包的平台。
为了使软件包管理器工作,它需要知道从哪里安装软件包,这是通过软件包仓库实现的。

npm(Node Package Manager)
  • npm 作为一个软件包管理器,同时也是 JavaScript 软件包最常用的软件包仓库。
  • 网址: npmjs.com

npm 不是唯一的选择。你可以管理自己的软件包仓库——例如 Microsoft Azure 等产品允许你创建到 npm 仓库的代理,GitHub 也提供软件包仓库服务
其他用途的软件仓库:

  • PyPI 是 Python 生态系统中的主要包仓库,存储和分发 Python 包。 网址: pypi.org
  • Maven Central 是 Java 和 JVM 生态系统中的主要包仓库,适用于 Maven、Gradle 和其他构建工具。 网址: search.maven.org
  • ····

使用npm

使用 npm(Node Package Manager)是管理 JavaScript 和 Node.js 项目依赖的常用方法。以下是一些常见的 npm 使用方法和命令,帮助你更好地管理项目依赖。

安装 npm

首先,确保你已经安装了 Node.js。npm 通常随 Node.js 一起安装。你可以通过以下命令检查是否已经安装:

npm -v

如果没有安装,可以从 Node.js 官方网站 下载并安装 Node.js。

初始化项目

在一个新的或现有的项目目录中,你可以使用以下命令初始化一个新的 npm 项目:

npm init

这个命令会引导你创建一个 package.json 文件,其中包含项目的基本信息和依赖项。你也可以使用 -y 标志自动生成默认配置:

npm init -y

安装包

本地安装

本地安装会将包安装到当前项目的 node_modules 文件夹中,并将其添加到 package.json 文件的 dependencies 部分:

npm install <package-name>

你也可以一次安装多个包:

npm install <package-name1> <package-name2>
全局安装

全局安装会将包安装到系统的全局目录中,使其在系统中的任何地方都可以使用。通常用于命令行工具:

npm install -g <package-name>

移除包

本地移除

从当前项目中移除一个包并更新 package.json 文件:

npm uninstall <package-name>
全局移除

从全局环境中移除一个包:

npm uninstall -g <package-name>

更新包

本地更新

更新本地安装的包到最新版本,并更新 package.json 文件:

npm update <package-name>
全局更新

更新全局安装的包到最新版本:

npm update -g <package-name>

查看包信息

本地查看

查看本地安装的包信息:

npm list

查看特定包的信息:

npm list <package-name>
全局查看

查看全局安装的包信息:

npm list -g --depth=0

运行脚本

package.json 文件中,你可以定义脚本来简化常用的任务。例如,启动一个 Node.js 服务器:

"scripts": {
  "start": "node index.js"
}

你可以使用以下命令运行这个脚本:

npm run start

安全性

为了确保你使用的包没有已知的安全漏洞,可以使用 npm audit 命令来检查项目依赖中的安全问题:

npm audit

如果发现问题,可以使用以下命令修复:

npm audit fix

发布包

如果你想将自己的包发布到 npm 仓库,可以使用以下命令:

npm publish

在此之前,请确保你已经登录 npm 账号:

npm login

pnpm介绍

image.png
pnpm 全称 performant npm,意思为 高性能的 npm。pnpm 由 npm/yarn 衍生而来,解决了 npm/yarn 内部潜在的 bug,极大的优化了性能,扩展了使用场景。被誉为最先进的包管理工具。
官网:https://pnpm.io/
中文网站:https://pnpm.io/zh/

  • 23
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值