在 Node.js 项目中添加包

已完成

Node.js 具有用于文件管理和 HTTP 处理等任务的内置包。 但 NPM 注册表还提供了大量第三方包。

何时以及如何选择 npm 包

作为 Tailwind Traders 的新手开发人员,你需要向项目添加功能。 你可以自行编写代码,但你决定使用现有包。 此开发决策是一种常见方案。

何时应使用现有包? 有两个因素需要考虑:

  • 质量:对于安全性等任务,使用成熟的包可确保遵循最佳做法并处理边缘案例。
  • 效率:编写自己的代码需要投入时间。 使用现有包可以节省大量精力。
  • 维护:库需要更新和 bug 修复。 将此问题交由开源团队处理通常效率更高。

开发人员可以从各种源查找和下载包,例如:

  • 注册表:注册表是包的集合,例如 npm 注册表。 还可以托管自己的注册表。
  • 存储库:可以直接从 GitHub URL 安装包。
  • 文件存储:可以从本地文件夹或压缩文件安装包,这对于测试自己的包非常有用。
  • 目录:也可以直接从目录进行安装。

选择包后,请检查其依赖项以考虑以下因素:

  • 大小:依赖项越多,占用空间越大。 如果存在带宽或硬件限制,则占用空间大小会非常重要。 请记住,安装包也会安装其依赖项。 这可能会生成大型 node_modules 文件夹。
  • 热门程度:包的热门程度可以表明其质量。
  • 许可:如果计划销售软件,请确保所有依赖项包许可证支持重用和转售。
  • 主动维护:避免使用已弃用或很少更新的依赖项。

要了解有关包的详细信息,请访问 NPM 上的包页面及其 GitHub 存储库。 还可以使用 npm 命令:npm view <package name>

如何安装包

要安装包,请使用随 Node.js 一起安装的 npm CLI。 可在终端中使用 npm install 命令将包添加到 Node.js 项目。

npm install <name of package>

在运行 install 命令时,命令行工具会连接到全局注册表、提取代码,然后将其放在项目根目录的 node_modules 文件夹中。

安装命令的一些常见开关包括:

  • 对于仅限开发的包,请使用 --save-dev。 此开关会保存到 package.jsondevDependencies 属性中。 这些依赖项通常为格式设置、lint、生成、转译和测试工具。
  • 对于仅限生产的包,请使用 --production。 此开关不包括仅限开发的包。
  • 对于全局可用的工具,请使用 -g。 命令行工具通常会全局安装,而不是导入到项目中。 全局依赖项安装在系统范围的目录中,而不是安装在项目级 node_modules 中。 但全局包可能会扰乱你的系统。 该 npx 命令可通过临时安装包来解决此问题。 使用 npx <name> 提取包、运行包,然后将其移除。

安装后,项目目录的外观如以下示例所示:

package.json
node_modules/
  <name of dependency>/
    <files included in the dependency>
src
  index.js

npm CLI 命令

npm 命令行工具有相当多的命令,可帮助你完成安装包、创作包和初始化 Node.js 项目等任务。

NPM 命令分为以下类别:

  • 管理依赖项:用于安装、更新和移除包的命令。
  • 运行脚本:用于管理测试和生成代码等开发流的命令。
  • 配置环境:用于设置安装路径和包源的命令。
  • 创作和发布包:用于创建和发布包的命令。

如果需要所有命令的详细列表,请在终端中输入以下命令:

npm --help

验证安装

要查看 package.json 文件夹中的内容,请使用 npm listnpm list 命令将列出已安装的 node_modules 目录中的所有包。 每个已安装包都已安装其自己的所有依赖项。

由于 list 命令可能生成较长的列表而难以理解,因此可以使用列表命令以不同的深度列出包。 深度为 0 时,该命令将列出与 package.json 的 dependencies 部分中相同的内容。

npm list --depth=<depth>

由于已安装了 Jest 包,因此 npm list --depth=0 将生成如下所示的输出:

├── jest@26.0.1

清理依赖项

如果不再需要包,请将其移除。 移除依赖项可使项目保持干净并节省空间。 对于 Angular、React 或 Vue 等单页应用程序 (SPA),此清理尤其重要。 这些应用可将代码捆绑并压缩到提供给浏览器的文件中。 文件越大,加载文件所需的时间就会越长,这可能会让用户望而却步。

可以通过两种方法清理不再需要的依赖项:

  • 卸载:要卸载包,请运行 npm uninstall <name of dependency>。 此命令可从 package.json 清单文件和 node_modules 文件夹中移除包。
  • 删除:使用 npm prunenode_modules 中移除所有未列出的依赖项。 如果要移除多个依赖项而不对每个依赖项运行卸载,则删除会非常有用。 要进行删除,请:
    1. package.json 中的依赖项或 devDependencies 中删除条目。
    2. run npm prune