NodeJS 如何找到旧的(可能未维护的)npm依赖项

bihw5rsg  于 5个月前  发布在  Node.js
关注(0)|答案(1)|浏览(72)

我知道npm outdated存在,它列出了过时的依赖项,但只有在有新版本发布的情况下。
但在某些情况下(例如放弃的项目),可能没有发布新版本,软件包可能仍然被认为过时
有没有办法找到在较长时间内没有改变(没有新版本)的依赖项-特别是,找到所有在2年内没有发布新版本的软件包?
背后的原因是,非常旧的依赖项可能已经过时,并且与最新的Node.js/TypeScript或其他链接依赖项不完全兼容。这些依赖项仍然需要手动审查,但有这个列表会很有帮助。

  • 寻找主要与npm软件包管理器兼容的解决方案。但如果它也能与yarn一起工作就更好了。*
vngu2lb8

vngu2lb81#

一个有趣的方法是检查每个依赖项的解析URL的last-modified头。
试试这个

for dep in $(npm ls --json | jq -r '.dependencies | .[].resolved'); do
  when="$(curl -sI $dep | grep -i last-modified: | sed 's/[^:]*..//' | tr -d '\r')";
  echo "$(date --date="$when" -I): $dep"
done

字符串
它可能会打印类似于

2022-08-04: https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz
2022-09-04: https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz
2021-10-18: https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz
2022-06-14: https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz
2022-11-01: https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.3.tgz
2022-04-12: https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz
2022-06-14: https://registry.npmjs.org/react/-/react-18.2.0.tgz
2022-01-21: https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz


如果你也对依赖项的依赖项感兴趣,你可以在上面的例子中将npm ls --json换成cat package-lock.json

相关问题