如何查找长期未更新(可能已无人维护)的npm依赖包
找出长期未更新的npm依赖包(近两年无新版本)
方法一:使用第三方工具 npm-age
这个工具专门用于检测依赖包的更新时长,兼容npm和yarn,能直接筛选出超过指定时间未更新的包。
- 全局安装工具:
npm install -g npm-age # yarn用户可执行 yarn global add npm-age
- 筛选近两年未更新的依赖:
npm-age --older-than 2y
执行后会遍历项目的dependencies和devDependencies,列出最后一次发布版本距今超过2年的包,同时展示包名、当前安装版本、最后更新时间。
方法二:自定义Node.js脚本(无需额外工具)
如果不想安装第三方工具,可通过npm/yarn的内置命令结合脚本实现需求:
- 在项目根目录创建
check-stale-deps.js文件,内容如下:
const { execSync } = require('child_process'); const fs = require('fs'); // 读取项目依赖信息 const pkg = JSON.parse(fs.readFileSync('./package.json', 'utf8')); const allDeps = { ...pkg.dependencies, ...pkg.devDependencies }; // 计算两年前的时间戳 const twoYearsAgo = Date.now() - 2 * 365 * 24 * 60 * 60 * 1000; console.log('近两年未发布新版本的依赖包:'); console.log('-----------------------------------'); Object.keys(allDeps).forEach(dep => { try { // npm用户用此命令,yarn用户替换为 `yarn info ${dep} time --json` const info = execSync(`npm view ${dep} time --json`, { encoding: 'utf8' }); const timeData = JSON.parse(info); // 过滤掉非版本的时间字段 const versionTimes = Object.entries(timeData).filter(([key]) => !['modified', 'created'].includes(key)); if (versionTimes.length === 0) return; // 获取最后一次版本发布时间 const [lastVersion, lastPublishTimeStr] = versionTimes[versionTimes.length - 1]; const lastPublishTime = new Date(lastPublishTimeStr).getTime(); if (lastPublishTime < twoYearsAgo) { console.log(`* ${dep}@${lastVersion} - 最后更新时间:${new Date(lastPublishTime).toLocaleString()}`); } } catch (err) { console.log(`* ${dep} - 无法获取更新信息(可能包已下架或网络异常)`); } });
- 运行脚本:
node check-stale-deps.js
补充说明
- 以上两种方法仅做初步筛选,后续仍需人工核查包的状态(如是否废弃、是否存在兼容风险等)。
- 自定义脚本若遇到网络问题或包信息缺失,会直接标记异常,需单独排查对应依赖。
内容的提问来源于stack exchange,提问作者Jurosh
相关产品推荐
相关产品推荐

