Команда npm для удаления или удаления неиспользуемых пакетов в Node.js
Есть ли способ просто удалить все неиспользуемые (необъявленные) зависимости из проекта Node.js (те, которые больше не определены в моем package.json
.) Когда я обновляю свое приложение, мне нравится, когда несвязанные пакеты удаляются автоматически.
4 ответа
Бежать npm prune
для сборки модулей, не перечисленных в package.json
,
От npm help prune
:
Эта команда удаляет "посторонние" пакеты. Если указано имя пакета, то удаляются только пакеты, соответствующие одному из предоставленных имен.
Посторонние пакеты - это пакеты, которые не перечислены в списке зависимостей родительского пакета.
Если
--production
Если указан флаг, эта команда удалит пакеты, указанные в ваших devDependencies.
Если вы не беспокоитесь о том, чтобы сделать это пару минут, можно решить rm -rf node_modules
а также npm install
снова, чтобы восстановить локальные модули.
Вы можете использовать npm-prune для удаления посторонних пакетов.
npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]
Эта команда удаляет "посторонние" пакеты. Если указано имя пакета, то удаляются только пакеты, соответствующие одному из предоставленных имен.
Посторонние пакеты - это пакеты, которые не перечислены в списке зависимостей родительского пакета.
Если указан флаг --production или для переменной среды NODE_ENV задано значение production, эта команда удалит пакеты, указанные в ваших devDependencies. Установка --no-production отменяет установку NODE_ENV на производство.
Если используется флаг --dry-run, то никаких изменений фактически не будет.
Если используется флаг --json, то изменения, внесенные в npm (или сделанные с помощью --dry-run), будут напечатаны как объект JSON.
При нормальной работе с включенной блокировкой пакетов посторонние модули автоматически удаляются при установке модулей, и вам понадобится только эта команда с флагом --production.
Если вы отключили блокировки пакетов, посторонние модули не будут удалены, и вы можете время от времени запускать npm prune для их удаления.
Используйте npm-dedupe, чтобы уменьшить дублирование
npm dedupe
npm ddp
Выполняет поиск в локальном дереве пакетов и пытается упростить общую структуру, перемещая зависимости дальше вверх по дереву, где они могут более эффективно использоваться несколькими зависимыми пакетами.
Например, рассмотрим этот график зависимости:
a
+-- b <-- depends on c@1.0.x
| `-- c@1.0.3
`-- d <-- depends on c@~1.0.9
`-- c@1.0.10
В этом случае npm-dedupe преобразует дерево в:
a
+-- b
+-- d
`-- c@1.0.10
Из-за иерархической природы поиска модуля узла, b и d получат свою зависимость, встречаемую единственным пакетом c на корневом уровне дерева.
Алгоритм дедупликации обходит дерево, перемещая каждую зависимость как можно выше в дереве, даже если дубликаты не найдены. Это приведет как к плоскому, так и к дедуплицированному дереву.
Вы можете запуститьnpx depcheck
чтобы получить список зависимостей и devDependencies, которые не используются в проекте.
Тогда вы можете запуститьnpm uninstall pkg1 pkg2
и так далее, чтобы удалить зависимости.
Или вы также можете удалить зависимости из package.json и переустановить пакеты после удаления node_modules и package-lock.json.