Вышел обновленный менеджер пакетов 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.