如何查找旧的(可能未维护的)npm 依赖项 [已关闭]

问题描述 投票:0回答:1

我知道

npm outdated
存在,它列出了过时的依赖项,但仅限于发布新版本的情况。

但在某些情况下(例如废弃的项目),可能没有发布新版本,并且包可能仍被认为是过时

有没有办法找到在较长时间内未更改(没有新版本)的依赖项 - 具体来说,找到所有在 2 年内没有发布新版本的软件包?

背后的原因是,非常旧的依赖项可能已经过时并且与最新的 Node.js/TypeScript 或其他链接依赖项不完全兼容,因此存在很高的风险。这些依赖项仍然需要手动审查,但拥有此列表会很有帮助。

搜索主要与

npm
包管理器兼容的解决方案。但如果它也能与
yarn
一起使用那就太好了。

javascript node.js npm yarnpkg
1个回答
1
投票

一个有趣的黑客可能是检查每个依赖项的已解析 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

© www.soinside.com 2019 - 2024. All rights reserved.