Это здесь!

Начиная с сегодняшнего дня, если вы наберете `npm install npm @ latest -g`, вы будете обновлены до npm версии 5. Кроме того, npm @ 5 включен во все новые установки Node.js 8 , который заменил Node .js 7 в текущей строке выпуска Node Project.

Последние полтора года мы работали над устранением огромного количества болевых точек, некоторые из которых существовали с момента создания реестра. Сегодняшний выпуск - это крупнейшее улучшение скорости, согласованности и удобства использования npm.

Полный список того, что нового и что изменилось, находится в наших примечаниях к выпуску, но вот некоторые основные моменты:

Это быстро

Мы переработали метаданные пакетов, загрузку пакетов и кеширование пакетов, и это значительно ускорило процесс. В целом ожидайте повышения производительности на 20–100%; мы также видели, что некоторые установки и версии выполняются в 5x быстрее.

(Установка веб-сайта npm в наших собственных средах разработки увеличилась с 99 секунд с использованием npm @ 4 до 27 секунд с npm @ 5. Теперь мы тратим меньше времени на рыцарские турниры.)

Поскольку изначально npm был разработан, разработчики изменили способ использования npm. Экосистема npm не только экспоненциально больше, но и количество зависимостей в среднем пакете npm увеличилось на 250% с 2014 года. Все больше разработчиков теперь устанавливают полезные инструменты, такие как Babel, Webpack и Tap, локально, а не глобально. Это лучшая практика, но это означает, что `npm install` выполняет гораздо больше работы.

Учитывая размер нашего сообщества, любое увеличение скорости дает огромную экономию для миллионов пользователей, не говоря уже обо всех наших клиентах Orgs и npm Enterprise. Сделать npm @ 5 быстрым было очевидной целью с отличными наградами.

Это последовательно

Файлы блокировки по умолчанию

Shrinkwrap был частью npm в течение долгого времени, но npm @ 5 делает файлы блокировки по умолчанию, поэтому все установки npm теперь воспроизводимы. Файлы, которые вы получаете при установке данной версии пакета, будут одинаковыми при каждой установке.

Мы обнаружили, что бесчисленное количество общих и трудоемких проблем может быть связано с «дрейфом», который происходит, когда в разных средах разработчика используются разные версии пакетов. С файлами блокировки по умолчанию это больше не проблема. Вы не потеряете время, пытаясь выяснить ошибку, только чтобы узнать, что она возникла от людей, использующих разные версии библиотеки.

SHA-512 хеши

npm @ 5 добавляет поддержку любой хэш-функции tarball, поддерживаемой Node.js, и публикует с хешами SHA-512. Проверяя все загруженные пакеты, вы защищены от повреждения данных и злонамеренных атак и можете быть уверены, что код, который вы загружаете из реестра, является согласованным и безопасным.

Самовосстанавливающийся кеш

Наше новое кэширование работает ужасно быстро, но при этом более устойчиво. Несколько процессов npm не повредят общий кеш, а npm @ 5 будет проверять данные как при вставке, так и при извлечении, чтобы предотвратить установку поврежденных данных. Если запись в кеше не проходит проверку целостности, npm @ 5 автоматически удаляет ее и выполняет повторную выборку.

Проще в использовании

Благодаря вашим отзывам мы улучшили взаимодействие с пользователем за счет оптимизации в npm @ 5. По большей части это более информативный и полезный результат. Лучшим примером этого является то, что npm больше не показывает вам все дерево при установке пакета; вместо этого вы увидите сводный отчет о том, что было установлено. Мы внесли это изменение из-за большего количества зависимостей в среднем пакете. Считывание файла за файлом оказалось довольно громоздким сверх определенной величины.

Он нуждается в тебе

npm @ 5 - это огромный шаг вперед как для npm, так и для нашего замечательного сообщества, и сегодняшний выпуск - это только начало. Ряд улучшений в конвейере сделает использование npm максимально простым и быстрым, чем когда-либо прежде.

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

Что вам подходит? Что нам нужно улучшить дальше? Насколько быстрее ваши установки? Дайте нам знать. Не стесняйтесь найти нас в Твиттере, и, если у вас возникнут какие-либо проблемы, обязательно напишите нам.