Команда 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.

Другие вопросы по тегам