NPM. пакет-замок. Обновите версию субзависимости по умолчанию до широко используемой версии - PullRequest
0 голосов
/ 03 мая 2020

Я заметил, что иногда одна использованная старая подчиненная зависимость становится по умолчанию, в то время как более часто используемые sh становятся вложенными.

Например, я установил dep package-1, который имеет sub dep package-2@^1.0.0.

Теперь, когда я устанавливаю другие пакеты, которые package-2@^2.0.0 используются более широко, я все еще вижу, что package-2@^1.0.0 - это sub dep по умолчанию, даже если он используется только один раз, когда package-2@^2.0.0 установлен несколько раз в другие внутри других установленных пакетов (aka deduped)

Я хочу видеть package-2@^1.0.0 дедупликации, потому что он используется только один раз, в то время как package-2@^2.0.0 должно быть по умолчанию.

Чтобы избежать Философия, я приведу реальный пример с репо .

Чтобы можно клонировать репо или сделать это самостоятельно с помощью

npm i -D @types/jest-environment-puppeteer@^4.3.1
npm i -D jest@^25.5.3

Теперь давайте проверим пакет: lock. json для основного депозита для @jest/types default @jest/types Как видите, по умолчанию используется значение @jest/types@24.9.0.

Давайте проверим, сколько раз оно используется Как видите, только 9 раз

Давайте проверим использование `@ jest / types @ ^ 25. 91 раз, что означает, что разумнее установить его по умолчанию, а не дедуплицировать, что означает, что мы устанавливаем его внутри каждого родителя, где это необходимо.

Я сделал ручная оптимизация, чтобы поменять их местами в package-lock. json. Я сохраняю его в optimized ветви.

Когда я переключаюсь с master ветви на optimized и запускаю npm i, я вижу следующий вывод

добавлено 142 пакета из 65 участники, удалили 529 пакетов, обновили 48 пакетов и проверены 275145 пакетов за 7,541 с

Это означает, что у меня 529 - 142 = 387 дополнительных пакетов из-за этой проблемы только для 2 операций.

Это может стать еще более проблематичным c со всей современной инфраструктурой внешнего интерфейса (webpack babel et c).

Есть ли способ сообщить npm, чтобы оптимизировать использование дедуплированных зависимостей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...