如何从 package.json 中删除冗余/未使用的依赖项?
Posted
技术标签:
【中文标题】如何从 package.json 中删除冗余/未使用的依赖项?【英文标题】:How to remove redundant/unused dependencies from package.json? 【发布时间】:2019-08-01 21:31:39 【问题描述】:我知道以前有人问过这个问题,但depcheck 似乎根本不适合我。除了必须为 babel、eslint 等“仅配置”库配置它之外,它给了我大量的错误警报。
如果你接到这样的任务,你的方法是什么?有什么最佳做法可以推荐给我吗?
谢谢!
【问题讨论】:
你试过yarn autoclean
吗?
感谢您的提示。看起来它只从 node_modules 中删除了冗余文件。我正在寻找的是从我的 package.json 中删除那些的东西,或者至少列出了没有在任何地方使用的 deps。
可能是最可靠的方法是删除 node_modules 运行应用程序并根据需要慢慢添加deps,直到应用程序运行。我只想说跟踪使用的版本,因为您不想引入任何重大更改。
很公平。我希望有一位资深的 javascript 向导看到这个,谁能给我一个银弹:)
如果它不存在,这是一个很酷的开发工具;)
【参考方案1】:
我们使用 depcheck
和 Python 来隔离 package.json dependencies
键。
import json
from sys import platform
from subprocess import run
div = "=================================="
use_shell = platform == "win32"
print(f"\nFinding unused dependencies\ndiv\n")
cmd = ["npx", "depcheck", "--json"]
depcheck_result = run(cmd, shell=use_shell, capture_output=True, text=True)
unused_dependencies = json.loads(depcheck_result.stdout)["dependencies"]
if len(unused_dependencies) > 0:
print(f"Found these unused dependencies\ndiv")
print(*unused_dependencies, sep="\n")
affirmative_responses = "y", "yes", "Y", "YES", ""
response = input(f"div\n\nRemove all? [yes] ").lower() in affirmative_responses
if response == True:
cmd = ["yarn", "remove", *unused_dependencies]
run(cmd, shell=use_shell)
print(f"\nDone!\ndiv\n")
else:
print(f"\nDone! - No unused dependencies found.\ndiv\n")
【讨论】:
【参考方案2】:答案是npm-check。
npm i -g npm-check
然后进入你的项目目录并运行工具
cd my-app
npm-check
some-package ? NOTUSED?
To remove this package: npm uninstall --save some-package
【讨论】:
以上是关于如何从 package.json 中删除冗余/未使用的依赖项?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 node_modules 文件夹添加 package.json 依赖项?
即使从 package.json 中删除,node-gyp 也会尝试构建依赖项
如何解决找到的`package-json。 ...要清除此警告,请删除 package-lock.json`,我认为它在 yarn install 时被 npm 覆盖