Главная | Все статьи | Код

Вышел обновленный менеджер пакетов npm v7.0.0

Время чтения статьи ~2 минуты
Вышел обновленный менеджер пакетов npm v7.0.0 главное изображение

Некоммерческая организация OpenJS Foundation, занимающаяся развитием языка JavaScript, объявила о выходе npm v7.0.0 — новой версии пакетного менеджера npm. Подробно рассказываем о новинках этой версии npm.

Новая версия менеджера появится вместе с Node.js 15.0.0 во второй половине ноября, однако любой желающий может установить npm v7.0.0 уже сейчас — для этого нужно запустить npm i -g npm@7 в своем терминале.

Новые функции npm v7.0.0:

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

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

— package-lock v2 и поддержка yarn.lock: новый формат package-lock откроет возможность делать детерминированно воспроизводимые сборки, а также включает в себя все, что необходимо npm для полного построения дерева пакетов. При этом до npm v7.0.0 файлы yarn.lock просто игнорировались, теперь же менеджер может использовать yarn.lock в качестве источника метаданных пакета и resolution guidance.

Внутренние изменения

Разработчики переработали внутреннюю структуру npm. Например, проверка и управление деревом node_modules перенесены в модуль Arborist. Подробнее об этом изменении и его последствиях читайте в блоге npmjs.

При этом в заявлении OpenJS Foundation говорится, что внутренние изменения npm гарантируют, что кодовая база этого продукта со временем станет более надежной и простой в обслуживании. В дальнейшем это позволит быстрее выпускать обновленные версии интерфейса командной строки с меньшим количеством ошибок и ускоренным циклом итераций.

На сегодняшний день нет модулей, которые бы работали с версией npm 6, но не могли бы поддерживать npm v7.0.0, отметили в OpenJS Foundation. Несмотря на это, автоматическая установка peer-зависимостей может потенциально нарушить определенные рабочие процессы.

Кроме того, npm v7.0.0 использует package.exports, что делает невозможным использование require() с внутренними модулями npm. Другое изменение — npx был полностью переписан для использования команды npm exec. Из-за этого вводятся различные изменения в функциональности, наиболее заметными из которых является сообщение о том, что модуль, который вы пытаетесь запустить, еще не установлен. О других критических изменениях в npm 7.0.0 можно почитать в блоге npmjs.com.


На Хекслете есть большой курс по работе с командной строкой, также пользователи могут пройти бесплатный курс по работе с Git.

Аватар пользователя Svet Ivanov
Svet Ivanov 14 октября 2020
11
Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 183 ₽ в месяц
Ручное тестирование веб-приложений
4 месяца
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 25 апреля
профессия
от 5 025 ₽ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 25 апреля
профессия
от 5 840 ₽ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 25 апреля
профессия
от 9 900 ₽ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 апреля
профессия
новый
Автоматизированное тестирование веб-приложений на JavaScript
8 месяцев
c опытом
в разработке
Старт 25 апреля
профессия
Верстка с использованием последних стандартов CSS
5 месяцев
с нуля
Старт в любое время