С сегодняшнего дня все пользователи npm могут использовать преимущество новой команды установки, называемой «npm ci». Команда предоставляет массивные улучшения в производительности и надёжности сборок для процессов непрерывной интеграции и непрерывного деплоя, предоставляя последовательный и быстрый опыт для разработчиков, использующих CI/CD в своей работе.
npm ci игнорирует package.json пакета и устанавливает модули руководствуясь локфайлом (package-lock.json). Это позволяет создавать воспроизводимые сборки: вы получаете именно то, что ожидаете при каждой установке.
Ранее, разработчики, которые желали получить синхронизированные node_mobules и package.json, архивировали свою папку node_modules. npm ci заменяет этот процесс единственной командой.
Это быстро.


npm ci быстрый — в некоторых случаях, в два раза быстрее npm i. Он предоставляет значительное увеличение производительности для всех разработчиков, использующих непрерывную интеграцию.
Эти увеличенные скорость и надежность сокращают время и способствуют лучшим практикам разработки. Это быстрее и проще для запуска тестов, разработчики могут запускать их чаще и активнее перехватывать ошибки.
npm ci обещает, что наибольшее преимущество получат большие команды. Возможность давать разработчикам «подписываться» на файл блокировки способствует более эффективной совместной работе в больших командах, и возможность установки именно того, что описано в файле блокировки, потенциально может сохранить десятки, если не тысячи, рабочих часов в месяц, позволяя командам тратить больше своего времени на создание и поддержку прекрасных вещей.
npm ci также предоставляет дополнительные варианты улучшения надёжности билдов вашего приложения. Как дополнительная инсталляционная команда, npm ci может быть использована для возвращения к изначальному состоянию, если npm i завершился с ошибкой, и наоборот. Это значительно снижает вероятность неудачной установки.
npm ci доступен сразу же после обновления на самую последнюю версию npm: выполните npm install -g npm@latest. Для больших подробностей о релизе обратитесь к логу изменений.
Мы желаем знать как это работает для вас в том числе. Вопросы? Результаты? Хотите поделиться тем, что вы и ваша команда создали? Пишите нам.
Что это за ботва такая?
npm ci игнорирует package.json пакета и устанавливает модули руководствуясь локфайлом (package-lock.json). Это позволяет создавать воспроизводимые сборки: вы получаете именно то, что ожидаете при каждой установке.
Ранее, разработчики, которые желали получить синхронизированные node_mobules и package.json, архивировали свою папку node_modules. npm ci заменяет этот процесс единственной командой.
Почему?
Это быстро.


npm ci быстрый — в некоторых случаях, в два раза быстрее npm i. Он предоставляет значительное увеличение производительности для всех разработчиков, использующих непрерывную интеграцию.
Эти увеличенные скорость и надежность сокращают время и способствуют лучшим практикам разработки. Это быстрее и проще для запуска тестов, разработчики могут запускать их чаще и активнее перехватывать ошибки.
npm ci обещает, что наибольшее преимущество получат большие команды. Возможность давать разработчикам «подписываться» на файл блокировки способствует более эффективной совместной работе в больших командах, и возможность установки именно того, что описано в файле блокировки, потенциально может сохранить десятки, если не тысячи, рабочих часов в месяц, позволяя командам тратить больше своего времени на создание и поддержку прекрасных вещей.
Это увеличивает надёжность
npm ci также предоставляет дополнительные варианты улучшения надёжности билдов вашего приложения. Как дополнительная инсталляционная команда, npm ci может быть использована для возвращения к изначальному состоянию, если npm i завершился с ошибкой, и наоборот. Это значительно снижает вероятность неудачной установки.
Как?
npm ci доступен сразу же после обновления на самую последнюю версию npm: выполните npm install -g npm@latest. Для больших подробностей о релизе обратитесь к логу изменений.
Что вы думаете?
Мы желаем знать как это работает для вас в том числе. Вопросы? Результаты? Хотите поделиться тем, что вы и ваша команда создали? Пишите нам.
Комментарии (4)
yarkov
11.03.2018 11:57Я один не понимаю что здесь происходит? А по вашему npm до этого чем занимался? Если был lock файл, то он из него и ставил зависимости.
saggid Автор
11.03.2018 12:42Там дело в том, что команда
npm i
изменяла существующийpackage-lock.json
на новый, как написано в док-ции к этому файлу:
package-lock.json is automatically generated for any operations where npm modifies either the node_modules tree, or package.json.
Теперь у нас есть команда
npm ci
, которая не будет изменять этот файл, обновляя зависимости проекта на самые последние, вместо этого он будет устанавливать строго то, что содержится в этом файле.
Более подробно об особенностях
npm ci
можно, опять же, почитать в документации к этому методу.
Наверное, хорошо было бы немного прояснить этот момент в документации, да, ибо я согласен, что это немного сбивает с толку.
justboris
Все хорошо, полезное улучшение. Но непонятно, почему так много времени понадобилось для реализации такой простой идеи — устанавливать модули по package-lock.json, невзирая package.json.
Складывается впечатление, что сами разработчики npm своим детищем не особо пользуются, и хорошим практикам ci не следуют
saggid Автор
Большой и сложный проект + малое число контрибьютеров. Основных разрабов там два человека, как я понимаю.