在 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.json
的devDependencies
属性中。 这些依赖项通常为格式设置、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 list
。 npm 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 prune
从node_modules
中移除所有未列出的依赖项。 如果要移除多个依赖项而不对每个依赖项运行卸载,则删除会非常有用。 要进行删除,请:- 从
package.json
中的依赖项或 devDependencies 中删除条目。 run npm prune
。
- 从