当前位置: 首页 > news >正文

Depcheck——专门用于检测 JavaScript 和 Node.js 项目中未使用依赖项的工具

文章目录

  • Depcheck 是什麽
  • 核心功能
    • 📚检测未使用的依赖
    • 🐛检测缺失的依赖
    • ✨支持多种文件类型
    • 🌍可扩展性
  • 安装与使用
    • 1. 安装 Depcheck
    • 2. 使用 Depcheck
  • Depcheck 的应用
  • 总结
  • 项目源码:

Depcheck 是什麽

来看一个常见错误场景🚨:同一个项目,开发者A持续开发并且稳定运行,但是开发者B拉取代码安装依赖却运行失败,除去 Node 等版本错误原因,最大的原因就是:A的本地node_modules文件夹中下载了某个依赖,但是package.json文件中并没有记录该依赖,导致其他开发者无法正常运行项目…

Depcheck 是一个开源的命令行工具,专门用于检测 JavaScript 和 Node.js 项目中的未使用的依赖项。它可以帮助开发者快速识别出项目中哪些依赖包没有被实际使用,或者是哪些未在 package.json 中声明但已经被项目使用的包。
在这里插入图片描述

对于开发者而言,Depcheck 是保持项目简洁和高效的必备工具,尤其是在复杂项目或长期维护的代码库中,它能显著减少冗余代码,提高依赖管理的质量。

核心功能

📚检测未使用的依赖

Depcheck 的核心功能是扫描项目中的所有代码,分析哪些依赖被引用了,哪些没有。未使用的依赖项会被标记为 “unused dependencies”,提醒开发者可以安全地移除这些依赖,减小项目体积,减少安全风险。

🐛检测缺失的依赖

除了查找未使用的依赖外,Depcheck 还能帮助检测项目中已经在代码中引用了,但却没有在 package.json 文件中声明的依赖项。这些缺失的依赖(missing dependencies)可能会导致项目在某些环境中无法正确构建或运行。

✨支持多种文件类型

Depcheck 支持多种文件类型和语法,包括 JavaScript、TypeScript、Babel、React JSX 等现代前端技术栈。这意味着它不仅适用于 Node.js 后端项目,也适合前端项目。

🌍可扩展性

Depcheck 允许开发者通过配置文件自定义检查规则,或忽略某些特定的文件或依赖。对于某些动态加载的模块,开发者可以通过 ignore 选项灵活调整工具的行为。

安装与使用

使用前提:
node.js版本 >= 10

1. 安装 Depcheck

Depcheck 是一个 npm 包,可以通过以下命令全局或本地安装:
在这里插入图片描述

2. 使用 Depcheck

在项目根目录运行以下命令:

depcheck

如果你是局部安装的话就使用npx命令:

npx depcheck

Depcheck 将扫描项目并返回检测结果,结果通常会分为三类⭐:
• 没有未使用的依赖项(Unused dependencies):项目中的 package.json 文件所声明的依赖项都被代码实际使用了。
• 没有缺失的依赖项(Missing dependencies):所有代码中引用的依赖项都在 package.json 中声明了。
• 没有未使用的开发依赖项(Unused devDependencies):开发依赖项也没有冗余,都是有效的。

示例输出:

情况一:

No depcheck issue

这个提示表明你的项目的依赖管理良好,所有依赖项都被合理使用且声明正确,项目依赖关系清晰,无需进一步操作。是一个积极信号✅。

情况二:

Unused dependencies
* element-plus

这表示项目中安装了element-plus,但是没有在代码中使用,是多余的依赖❌。

Missing dependencies和Unused devDependencies现实情况和上面一样。

在这里插入图片描述
还可以在项目文件夹下创建一个.depcheckrc文件,用来配置更多的项目选项。

ignores: ["eslint", "babel-*"]
skip-missing: true

Depcheck 的应用

  1. 代码库优化 随着项目的增长,某些依赖项可能在开发过程中被添加,但后来不再需要。Depcheck 可以帮助识别这些无用的依赖,减少项目的复杂度,提高构建性能。

  2. 项目迁移或升级 在迁移或升级技术栈时,Depcheck 可以用于检测哪些依赖项已经不再兼容或不需要。尤其是在从老旧版本向现代框架迁移时,依赖项的清理变得非常重要。

  3. 依赖管理中的安全性 未使用的依赖项可能带来潜在的安全风险,因为它们可能包含已知漏洞,但实际上并未在项目中使用。移除这些依赖项可以降低项目暴露的攻击面。

总结

Depcheck 是一个强大且简单易用的工具,适合所有 JavaScript 和 Node.js 项目的开发者使用。它通过自动化的方式帮助开发者保持项目依赖的清洁和安全,减少技术债务,同时提升项目的可维护性。通过定期使用 Depcheck,开发者可以确保项目中只包含必要的依赖,从而提高项目的性能和安全性。

项目源码:

https://github.com/depcheck/depcheck

相关文章:

Depcheck——专门用于检测 JavaScript 和 Node.js 项目中未使用依赖项的工具

文章目录 Depcheck 是什麽核心功能📚检测未使用的依赖🐛检测缺失的依赖✨支持多种文件类型🌍可扩展性 安装与使用1. 安装 Depcheck2. 使用 Depcheck Depcheck 的应用总结项目源码: Depcheck 是什麽 来看一个常见错误场景&#x1…...

前端构建工具vite的优势

1. 极速冷启动 Vite 使用原生 ES 模块 (ESM) 在开发环境下进行工作。相比于传统构建工具需要打包所有的文件,Vite 只在浏览器请求模块时动态加载所需的文件。无打包冷启动:无需预先打包,项目启动非常快,尤其对于大型项目效果更明…...

hive查询语句

1.基本语法 SELECT [ALL | DISTINCT]select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BYcol_list] [HAVING where_condition] [ORDER BYcol_list] [CLUSTER BYcol_list | [DISTRIBUTE BY col_list] [SORT BY col_list] ] [LIMIT number] …...

【AIGC】2024-ECCV-ControlNet++:通过有效的一致性反馈改进条件控制

2024-ECCV-ControlNet: Improving Conditional Controls with Efficient Consistency Feedback ControlNet:通过有效的一致性反馈改进条件控制摘要1. 引言2. 相关工作2.1 基于扩散的生成模型2.2 可控的文本到图像扩散模型2.3 语言和视觉奖励模型 3. 方法3.1. 初步3.…...

Mysql5.7变为GreatSQL 8.0.32-25过程中,SQL语句报错及解决方案

考虑兼容国产化数据库,现需要将Mysql5.7变为GreatSQL,在执行部分sql时,发现在Mysql5.7无报错,在GreatSQL有报错,在此记录一下遇到的几个错误。 1.ERROR 1231 (NO_AUTO_CREATE_USER) 1.1.报错提示 ERROR 1231 (42000…...

Qt 使用QAxObject将QTableView数据导出到Excel表格

这是我记录Qt学习过程的第6篇心得文章,主要是方便自己编写的应用程序导出Excel数据的,走了不少弯路直接上代码。 实现代码: //人员信息导出 ui->pbtn2->setEnabled(false); // 打开文件对话框,选择 excel文件 QString fil…...

fastGpt

参考本地部署FastGPT使用在线大语言模型 1 rockylinx 1 ollama安装 在rockylinux中安装的,ollama由1.5G,还是比较大,所有采用在windows下下载,然后安装的方式,linux安装 tar -C /usr -xzf ollama-linux-amd64.tgz #…...

如何全方位应对服务可用性的挑战

在数字化转型的浪潮中,运维团队正站在企业IT架构的核心位置,面对着前所未有的挑战。服务响应时间和失败率,作为衡量服务质量的重要指标,一直备受关注。然而,在追求这两项指标优化的同时,运维团队还需关注其…...

二进制方式部署k8s集群

目标任务: 1、Kubernetes集群部署架构规划 2、部署Etcd数据库集群 3、在Node节点安装Docker 4、部署Flannel网络插件 5、在Master节点部署组件(api-server,schduler,controller-manager) 6、在Node节点部署组件(kubelet,kube-proxy) 7、查看集群状态 8、运行⼀个测…...

Vivado时序报告七:Report Clock NetworkReport Clock Interaction详解

目录 一、前言 二、Report Clock Network 2.1 Report Clock Network流程 2.2 Report Clock Network报告 三、Report Clock Interaction 3.1 示例设计 3.2 配置选项 3.2.1 Options 3.2.2 Timer_Settings 3.3 Clock Interaction报告 3.3.1 Clock Pair Classification …...

HarmonyOS 组件样式@Style 、 @Extend、自定义扩展(AttributeModifier、AttributeUpdater)

1. HarmonyOS Style 、 Extend、自定义扩展(AttributeModifier、AttributeUpdater) Styles装饰器:定义组件重用样式   ;Extend装饰器:定义扩展组件样式   自定义扩展:AttributeModifier、AttributeUpdater 1.1. 区…...

信息安全工程师(73)网络安全风险评估过程

一、确定评估目标 此阶段需要明确评估的范围、目标和要求。评估目标通常包括特定的网络系统、信息系统或网络基础设施,评估范围可能涉及整个组织或仅特定部门。明确评估要求有助于确保评估过程的针对性和有效性。 二、收集信息 在评估开始之前,需要对目标…...

在MacOS玩RPG游戏 - RPGViewerPlus

背景知识 由于我一直使用Mac电脑,所以一直对Mac如何玩RPGMV/RPGMZ游戏的方式有进一步的想法。 网上能给出的方案都是自行启动一个HTTP服务进行,进行服务加载。这个方法有效,但兼容性较差。涉及到自定义功能模块的游戏,都会有报错…...

2024.10.27 直接插入排序 非递归后序遍历(复杂版)

直接插入排序 思路:用temp变量存放需要插入前面有序序列的变量,然后用里面的那个for循环寻找到需要插入的位置。 额外注意的点:arr[j1]temp;这个是因为内置循环每次出来之后所指向的位置是我们要插入的位置的前一个(-1或者插入…...

Ubuntu 22.04系统启动时自动运行ROS2节点

在 Ubuntu 启动时自动运行 ROS2 节点的方法 环境:Ubuntu 系统,ROS2 Humble,使用系统自带的 启动应用程序 目标:在系统启动时自动运行指定的 ROS2 节点 效果展示 系统启动后,自动运行小乌龟节点和键盘控制节点。 实践…...

张三进阶之路 | 基于Spring AOP的Log收集

前情提要 📌 张三对于公司的日志处理系统不满意,认为其性能不佳且功能有限。为了展示自己的能力和技术实力,他决定利用Spring AOP(面向切面编程)开发一个更高效的日志处理系统,并将其存储在Redis中。 首先…...

ubuntu新装ubuntu,重启黑屏

现象:双系统电脑向移动硬盘安装Ubuntu系统后,重启黑屏并显示Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists possible device or file completions. 又拔下无法启…...

太极安全监控系统0.8

完善后的代码及功能详细介绍 完善后的代码 python import os import sys import subprocess import re import datetime import threading import tkinter as tk from tkinter import messagebox, simpledialog, ttk import scapy.all as scapy import whois import numpy as …...

E-清楚姐姐的布告规划【01背包】

就当一个01背包写就行&#xff0c;只不过需要保证不交叉&#xff0c;w[i]覆盖i点&#xff0c;用一个if来判断即可 #include<bits/stdc.h> #define int long long using namespace std; int w[5005]; int f[5005]; int t,n,m; signed main() {cin>>t;while(t--){…...

哪款宠物空气净化器噪音低?希喂、美的、安德迈测评分享

今年双11&#xff0c;宠物空气净化器到底应该如何选&#xff1f;在所有的家电品类里&#xff0c;宠物空气净化器算是比较特殊的那个&#xff0c;产品迭代太快&#xff0c;我们把今年双11在售的各大主流品牌的宠物空气净化器统一汇总整理&#xff0c;发现基本一多半都是24年下半…...

Open Interpreter一文详解:从安装到GUI控制完整步骤

Open Interpreter一文详解&#xff1a;从安装到GUI控制完整步骤 1. 引言&#xff1a;你的本地AI编程助手 想象一下&#xff0c;你对着电脑说&#xff1a;“帮我分析一下这个月的销售数据&#xff0c;做个趋势图”&#xff0c;然后AI就开始自动写Python代码、读取你的Excel文件…...

页游党必看!传奇、篮球、策略全都有,点击即玩

对于喜欢玩网页游戏的朋友来说&#xff0c;找一个靠谱、福利多、游戏全的平台太重要了&#xff01;不用下载、点击即玩&#xff0c;还能安心挂机不担心跑路&#xff0c;这样的平台才是真刚需&#xff5e; 今天就给大家安利一个深耕页游十余载的老牌平台——602游戏平台&#x…...

像素幻梦部署实战:阿里云ECS+GPU实例零配置运行像素工坊全记录

像素幻梦部署实战&#xff1a;阿里云ECSGPU实例零配置运行像素工坊全记录 1. 像素幻梦创意工坊简介 像素幻梦(Pixel Dream Workshop)是一款基于FLUX.1-dev扩散模型的下一代像素艺术生成工具。它采用独特的16-bit像素工坊视觉设计&#xff0c;为创作者提供沉浸式的AI绘图体验。…...

税务季钓鱼攻击中合法远程管理工具的滥用机制与防御策略研究

摘要 随着数字化办公环境的普及&#xff0c;网络攻击手段正经历从传统恶意软件向“无文件”及“合法工具滥用”的深刻转型。2026年3月&#xff0c;微软威胁情报团队披露了一系列针对美国税务季的复杂网络钓鱼活动&#xff0c;这些活动不仅利用了社会工程学原理窃取凭证&#xf…...

Android蓝牙HFP连接实战:从SDK调用到底层状态机全解析(附避坑指南)

Android蓝牙HFP连接实战&#xff1a;从SDK调用到底层状态机全解析&#xff08;附避坑指南&#xff09; 在移动设备互联场景中&#xff0c;蓝牙免提协议&#xff08;HFP&#xff09;作为语音通话的核心传输通道&#xff0c;其连接稳定性直接影响用户体验。本文将深入Android蓝牙…...

Nunchaku FLUX.1-dev效果实测:低光照/夜景/逆光等复杂场景表现

Nunchaku FLUX.1-dev效果实测&#xff1a;低光照/夜景/逆光等复杂场景表现 你是不是也遇到过这样的烦恼&#xff1f;想用AI生成一张夜景照片&#xff0c;结果画面一片死黑&#xff0c;细节全无&#xff1b;或者想创作一张逆光人像&#xff0c;结果人物脸部黑成一团&#xff0c…...

ResNet18物体识别在内容审核中的应用:快速过滤与分类图片

ResNet18物体识别在内容审核中的应用&#xff1a;快速过滤与分类图片 1. 内容审核的挑战与解决方案 在当今数字内容爆炸式增长的时代&#xff0c;内容审核已成为平台运营的关键环节。每天都有海量的图片需要被快速准确地分类和过滤&#xff0c;传统人工审核方式已无法满足需求…...

Qwen2.5-7B-Instruct惊艳表现:中文古诗创作+格律校验+背景知识延伸

Qwen2.5-7B-Instruct惊艳表现&#xff1a;中文古诗创作格律校验背景知识延伸 1. 项目简介 今天要给大家介绍的是一个让人眼前一亮的大模型应用——基于Qwen2.5-7B-Instruct打造的智能对话服务。这个项目可不是普通的聊天机器人&#xff0c;而是专门为处理复杂文本任务设计的高…...

OpenClaw+GLM-4.7-Flash自动化测试:3小时无人值守执行日志分析

OpenClawGLM-4.7-Flash自动化测试&#xff1a;3小时无人值守执行日志分析 1. 为什么选择这个技术组合 上个月团队新上线了一个分布式服务&#xff0c;每天产生近10GB的日志文件。最初我们尝试用传统脚本分析&#xff0c;但发现两个痛点&#xff1a;一是日志格式不统一&#x…...

政务金融AI获客合规难?矩阵跃动小陌GEO私有化部署,兼顾安全与效率

在数字经济与人工智能深度融合的2026年&#xff0c;AI已成为政务金融领域数字化转型的核心驱动力&#xff0c;尤其在获客场景中&#xff0c;AI技术能够实现精准触达、高效转化&#xff0c;大幅降低传统获客模式的人力与时间成本。但政务金融领域的特殊性的决定了其AI应用不能单…...