2013-12-26 3 views
4

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

Есть ли инструмент для реорганизации node_modules для удаления дубликатов, поместить их в корневой каталог и как-то еще кучу модулей для оптимизации этого?

+0

Любопытно: вы обнаружили, что некоторые из модулей являются дубликатами, включая версию? Интересно, сколько у вас модулей - какая-то статистика была бы интересной. –

+3

Вы посмотрели на 'npm dedupe'? https://npmjs.org/doc/cli/npm-dedupe.html – loganfsmyth

+0

@ john-zwinck 'npm list | wc-l' показал около 3000 модулей – Serg

ответ

3

Иерархия НПМ на самом деле довольно сложна, и они много работали над ее оптимизацией. Самое большее, что вы теряете здесь, - это небольшое дисковое пространство. Если вам действительно нужно обрезать структуру пакета для вашего приложения, вы можете взглянуть на npm dedupe, который построен прямо на npm и делает именно то, о чем вы просите (как можно больше объединяет дубликаты).

Я знаю, что многие люди против проверки в каталоге node_modules, но в производственных приложениях мы обнаружили, что проверка в node_modules упрощает привязку фатальных изменений в нашем приложении. Конечно, вы, как правило, знаете, что ваше приложение ломалось после последнего npm update, но если ваше приложение довольно большое, как у нас, то это просто недостаточно, чтобы решить проблемы быстро и эффективно. Поэтому в больших производственных приложениях (т. Е. Не в библиотеках, публикуемых в NPM) я использую npm dedupe для упрощения структуры пакета перед их проверкой.

Если вы пишете код, который другие будут потреблять (через NPM или иначе), то проверка node_modules - не лучшая идея, и вам следует избегать этого, добавляя node_modules в список игнорирования системы контроля версий. Вы также должны убедиться, что вы зависимы от package.json - это номера конкретной версии с минимальным количеством диапазонов (пожалуйста, не ставьте звездочки вместо номеров версий в ваших производственных приложениях: /).

Если вы следуете этим основным шаблонам, вы можете просто забыть о каталоге node_modules и позволить npm заботиться о вас.

Смежные вопросы