команда npm для удаления или обрезки неиспользуемых пакетов в узле.js


есть ли способ просто удалить все неиспользуемые (необъявленные) зависимости от узла.проект js (те, которые больше не определены в my package.json.) Когда я обновляю свое приложение, мне нравится, чтобы пакеты без ссылок удалялись автоматически.

3 323

3 ответа:

выполнить 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]

эта команда удаляет "лишние" пакеты. Если указано имя пакета, то удаляются только пакеты, соответствующие одному из указанных имен.

посторонние пакеты-это пакеты, которые не перечислены в списке зависимостей родительского пакета.

если --производства флаг указан или переменной NODE_ENV переменная окружения имеет значение производства, эта команда удалит пакеты, указанные в вашем devDependencies. Установка -- no-production перечеркнет переменной NODE_ENV установлен до производства.

если -- dry-run флаг используется, то никаких изменений не производится.

если --json флаг используется тогда изменения npm prune сделал (или сделал бы с -- dry-run) печатаются как объект JSON.

при нормальной работе с включенными блокировками пакетов посторонние модули обрезаются автоматически при установке модулей, и вам понадобится только эта команда с --производства флаг.

если вы отключили пакет-блокировки, то посторонние модули не будут удалены, и это до вас, чтобы запустить 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 на корневом уровне дерева.

алгоритм дедупликации ходит по дереву, перемещая каждую зависимость как можно выше в дереве, даже если дубликаты не найдены. Это повлечет за собой как плоский и дедуплицированный дерево.