如何在 React 中删除未使用的依赖项

发布日期:2026-07-16 02:33:03   来源 : 杭州电子商务研究院    浏览量 :2
杭州电子商务研究院 发布日期:2026-07-16 02:33:03  
2

介绍

React 专注于使用外部依赖项进行开发。这些依赖项是作为npm包导入的可重用 React 组件。但是,依赖项过多的项目会阻碍低端设备和功能较弱的系统的性能。为了解决这个问题,必须跟踪项目中未使用的包并最终将其删除。本指南将告诉您如何使用一些简单的工具来执行此操作,而无需手动跟踪项目中的每个文件以查找未使用的包。

使用依赖项的影响

在项目中使用依赖项有很多用途。首先,它通过为您提供现成的工具和方法,帮助您轻松高效地执行复杂任务。其次,它使代码保持简洁、简短和可读,从而减轻了其他人难以理解您的代码的问题。最后,它节省了大量的开发时间。

但是,滥用项目中依赖项的自由会大大降低应用程序的性能。您可能会不知不觉地添加大量不必要的代码行,导致包大小变大。最常见的情况是,您安装了一个npm包,因为项目曾经需要它,但后来没有使用它,并且忘记手动将其删除。例如,如果您正在开发应用程序的前端,并且决定在 React 应用程序中使用bootstrap ,但后来决定应该使用material-ui,您可能会忘记从应用程序中卸载bootstrap。随着应用程序变得越来越大、越来越复杂,跟踪未使用的依赖项并手动删除它们变得越来越困难。

使用 depcheck 跟踪依赖关系

depcheck是一款使用 React 应用的package.json文件中npm提供的信息来分析依赖项的工具。它有助于识别应用中正在使用哪些npm包,哪些没有使用。

在空的 React 项目中,通过运行以下命令安装depcheck :

      npm install -g depcheck
    

这将在您的系统上全局安装depcheck。接下来,在您想要检查依赖项的文件夹中运行以下命令。

      depcheck
    

确保此文件夹包含package.json文件,否则depcheck将无法跟踪您的依赖项。您通常需要在项目的根目录中运行此命令。

对空的 React 项目运行它将产生以下输出:

      Unused dependencies
* @testing-library/user-event
Missing dependencies
* eslint-config-react-app: .\package.json
* babel-eslint: .\package.json
* eslint-plugin-import: .\package.json
* eslint-plugin-flowtype: .\package.json
* eslint-plugin-jsx-a11y: .\package.json
* eslint-plugin-react: .\package.json
* eslint-plugin-react-hooks: .\package.json
    

因此,depcheck将未使用的依赖项列表与其他依赖项分开。要了解其工作原理,请安装react-bootstrap

      npm i react-bootstrap
    

再次运行depcheck 。

      depcheck
    

由于您只安装了react-bootstrap包并且没有从中导入任何内容,因此depcheck将其显示为未使用的依赖项。

      Unused dependencies
* @testing-library/user-event
* react-bootstrap
Missing dependencies
* eslint-config-react-app: .\package.json
* babel-eslint: .\package.json
* eslint-plugin-import: .\package.json
* eslint-plugin-flowtype: .\package.json
* eslint-plugin-jsx-a11y: .\package.json
* eslint-plugin-react: .\package.json
* eslint-plugin-react-hooks: .\package.json
    

如果您在App.js中导入react-bootstrap组件...

      import Button from 'react-bootstrap/Button';
    

...并再次运行depcheck,它不再显示未使用的依赖项下的react-bootstrap

      Unused dependencies
* @testing-library/user-event
Missing dependencies
* eslint-config-react-app: .\package.json
* babel-eslint: .\package.json
* eslint-plugin-import: .\package.json
* eslint-plugin-flowtype: .\package.json
* eslint-plugin-jsx-a11y: .\package.json
* eslint-plugin-react: .\package.json
* eslint-plugin-react-hooks: .\package.json
    

这意味着depcheck仅检查您的导入而不是实际代码。

您还可以使用以下命令的语法传递其他参数。

      depcheck [directory] [arguments]
    

[directory]​​参数是package.json文件所在的项目的根目录。如果未指定,则默认为当前目录。[arguments]参数可用于自定义输出。

使用 npm-check 跟踪依赖项

npm-check可以完成类似的依赖跟踪工作,但会以更具分析性和可读性的方式显示它们。它使用配色方案来传达有关应用程序中使用的npm包的不同信息。首先通过运行以下命令全局安装它。

      npm install -g npm-check
    

按照上一节所述,App.js中从react-bootstrap导入Button组件。

      import Button from 'react-bootstrap/Button';
    

现在运行以下命令让npm-check分析您的依赖项。

      npm-check
    

这会在命令行上显示对您的软件包的生动分析,并通过将未使用的软件包标记为NOTUSED来突出显示。

      ...
react-bootstrap NOTUSED?  Still, using react-bootstrap?
                Depcheck did not find code similar to 													require('react-bootstrap') or import from 												'react-bootstrap'.

                Check your code before removing as depcheck 											isn't able to foresee all ways dependencies 											can be used.
                Use --skip-unused to skip this check.
                To remove this package: npm uninstall --save react-bootstrap
....
    

它还会显示哪些软件包已过时且不正确,以及执行所需操作的相关命令。它有一个交互式 UI,可用于将模块更新到较新的版本。您可以尝试在任何实时项目中运行它以探索更多功能。

使用 npm uninstall 卸载软件包

一般来说,您可以通过运行以下命令来卸载任何npm包或依赖项:

      npm uninstall <package_name>
    

让我们通过运行以下命令从项目中卸载react-bootstrap :

      npm uninstall --save react-bootstrap
    

--save标志表示模块记录将从package.json中删除。如果使用不带 save 标志的命令,npm将从package.json中删除模块记录,并从node_modules中删除模块文件夹。在较新版本的npm中,这两个命令本质上执行相同的操作。

npm-uninstall采用三个可选标志来保存或更新package.json文件中的包版本

  • -S--save标志表示该包将从主要依赖项中删除。

  • -D--save -dev标志表示该包将从您的devDependencies中删除

  • -O--save -optional标志表示该包将从您的optionalDependencies中删除

  • --no-save标志表示该包不会从package.json文件中删除。

结论

使用依赖项来跟踪另一个依赖项可能听起来很奇怪,但这是最简单、最安全的选择。depchecknpm-check都很小,全局安装它们不会为您的生产构建添加额外的依赖项。使用它们来减少 React 项目的构建大小可以为您带来巨大的性能优势并加快您的开发过程。

了解更多

探索 Pluralsight 的这些 React 和 Bootstrap 课程以继续学习:

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据