• 软件包管理|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.json 文件:

    npm uninstall 
    
    全局移除

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

    npm uninstall -g 
    

    更新包

    本地更新

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

    npm update 
    
    全局更新

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

    npm update -g 
    

    查看包信息

    本地查看

    查看本地安装的包信息:

    npm list
    

    查看特定包的信息:

    npm list 
    
    全局查看

    查看全局安装的包信息:

    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/

  • 相关阅读:
    一起Talk Android吧(第四百二十回:贝塞尔曲线)
    jQuery,解决命名冲突的问题
    PC3329L DC-DC降压 10V-100V输入3A大流输出带EN功能实现零功耗只需极少元器件
    文件上传四次绕过
    【Python】【OpenCV】关于cv2.findContours()轮廓索引(编号)解析(RETR_TREE)
    数据结构与算法:树 二叉树入门(一)
    zsh: command not found: adb问题分析
    Spring Boot中比较好用的工具
    Charles工具
    基于SSM的古董拍卖系统
  • 原文地址:https://blog.csdn.net/weixin_45213317/article/details/140963703