npm@5 теперь npm@latest

Andrey Melikhov
devSchacht
Published in
3 min readJun 1, 2017

--

Перевод заметки в официальном блоге npm: npm@5 is now npm@latest.

Уже здесь!

Начиная с сегодняшнего дня, если вы наберете npm install npm@latest -g, вы обновитесь до версии npm 5.0.1. Кроме того, npm@5 поставляется вместе с новой Node.js 8.

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

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

Он быстрый

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

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

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

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

Он консистентный

Лок-файл по умолчанию

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

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

Хэш SHA-512

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

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

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

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

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

Ты нужен ему

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

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

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

Слушайте наш подкаст в iTunes и SoundCloud, читайте нас на Medium, контрибьютьте на GitHub, общайтесь в группе Telegram, следите в Twitter и канале Telegram, рекомендуйте в VK и Facebook.

Статья на GitHub

--

--

Andrey Melikhov
devSchacht

Web-developer in big IT company Перевожу всё, до чего дотянусь. Иногда (но редко) пишу сам.