Есть ли способ определить, есть ли в вашем файле package.json пакеты, которые больше не нужны?
Например, при тестировании пакета и последующем комментировании или удалении кода, но забыв удалить его, я получаю пару пакетов, которые можно удалить.
Какой эффективный способ определить, можно ли безопасно удалить пакет?
node.js
dependencies
npm
Джош С
источник
источник
depcheck
перечисляю каждый пакет какunused
неправильныйnpx depcheck
Существует также пакет под названием
npm-check
:Это довольно мощный и активно развивающийся. Одна из его функций - проверка неиспользуемых зависимостей - для этой части используется
depcheck
модуль, упомянутый в другом ответе.источник
npm outdated
проверяет и перечисляет текущие, разыскиваемые и последние версии пакетов. Нет списка неиспользованных пакетов, хотя.Если вы используете Unix-подобную ОС (Linux, OSX и т. Д.), Вы можете использовать комбинацию
find
иegrep
для поиска операторов require, содержащих имя вашего пакета:Если вы ищете весь
require('name-of-package')
оператор, не забудьте использовать правильный тип кавычек:или
Недостатком является то, что он не полностью автоматический, то есть он не извлекает имена пакетов
package.json
и не проверяет их. Вы должны сделать это для каждого пакета самостоятельно. Посколькуpackage.json
это всего лишь JSON, это можно исправить, написав небольшой скрипт, который используетсяchild_process.exec
для запуска этой команды для каждой зависимости. И сделать это модулем. И добавьте его в репозиторий NPM ...источник
.jsx
файлов и.ts
файлов и т.д.: Dфискебен написал (а):
Давайте сделаем ответ Фискебена автоматизированным, если по какой-либо причине
depcheck
он не работает должным образом! (Например, я попробовал это с Typescript, и это дало ненужные ошибки синтаксического анализа)Для разбора
package.json
мы можем использовать программное обеспечениеjq
. В приведенном ниже сценарии оболочки требуется имя каталога, с которого следует начать.Сначала он создает два временных файла, где мы можем кэшировать имена пакетов и файлы.
Это начинается с
find
команды. Первая и вторая строка заставляют игнорироватьnode_modules
иbuild
папки (или что вы хотите). Третья строка содержит допустимые расширения, здесь вы можете добавить больше, например, файлы JSX или JSON.Функция будет читать зависимые типы.
Сначала это
cat
ВЛЯЕТСЯpackage.json
. Затемjq
получает требуемую группу зависимостей. ({} +
есть ли, чтобы он не выдавал ошибку, если, например, в файле нет одноранговых зависимостей.)После этого
sed
извлекаются части между кавычками, название пакета.-n
и.../p
говорит ему напечатать соответствующие части и ничего больше изjq
вывода JSON. Затем мы читаем этот список имен пакетов вwhile
цикл.RES
количество вхождений имени пакета в кавычках. Прямо сейчас этоimport
/require
...'package'
/"package"
. Это делает работу в большинстве случаев.Затем мы просто посчитаем количество строк результата и напечатаем результат.
Предостережения:
tsconfig.json
файлы (lib
опция)grep
вручную только^USED
иUNUSED
файлы.источник
Для этой цели мы можем использовать приведенный ниже модуль npm:
https://www.npmjs.com/package/npm-check-unused
источник
многие из ответов здесь, как найти неиспользуемые предметы.
Я хотел удалить их автоматически .
Установите этот проект узла.
$ npm install -g typescript tslint tslint-etc
В корневом каталоге добавьте новый файл tslint-imports.json
{ "extends": [ "tslint-etc" ], "rules": { "no-unused-declaration": true } }
Запустите это на свой страх и риск, сделайте резервную копию :)
$ tslint --config tslint-imports.json --fix --project .
источник
npx depcheck --json | jq '.dependencies[]' | xargs -L1 npm rm