You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找长期未更新(可能已无人维护)的npm依赖包

找出长期未更新的npm依赖包(近两年无新版本)

方法一:使用第三方工具 npm-age

这个工具专门用于检测依赖包的更新时长,兼容npm和yarn,能直接筛选出超过指定时间未更新的包。

  1. 全局安装工具:
npm install -g npm-age
# yarn用户可执行
yarn global add npm-age
  1. 筛选近两年未更新的依赖:
npm-age --older-than 2y

执行后会遍历项目的dependencies和devDependencies,列出最后一次发布版本距今超过2年的包,同时展示包名、当前安装版本、最后更新时间。

方法二:自定义Node.js脚本(无需额外工具)

如果不想安装第三方工具,可通过npm/yarn的内置命令结合脚本实现需求:

  1. 在项目根目录创建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} - 无法获取更新信息(可能包已下架或网络异常)`);
  }
});
  1. 运行脚本:
node check-stale-deps.js

补充说明

  • 以上两种方法仅做初步筛选,后续仍需人工核查包的状态(如是否废弃、是否存在兼容风险等)。
  • 自定义脚本若遇到网络问题或包信息缺失,会直接标记异常,需单独排查对应依赖。

内容的提问来源于stack exchange,提问作者Jurosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 11:27:13