Какие npm команды чаще используешь и для чего
Что проверяют
Работали ли вы с зависимостями руками, а не только запускали npm start. Главное различие, которое ищут: npm install против npm ci и роль package-lock.json. Следом спрашивают, как вы обновляете пакеты и разбираетесь с уязвимостями.
Как отвечать
Сгруппируйте команды по задачам:
- установка:
npm iставит зависимости и обновляет lock-файл, если менялсяpackage.json;npm i -D pkgдобавляет вdevDependencies,--save-exactфиксирует точную версию; - CI:
npm ciставит строго поpackage-lock.json, сначала удаляетnode_modulesи падает, если lock расходится сpackage.json. Сборка воспроизводимая, поэтому в пайплайнах берут её; - скрипты:
npm run build,npm test,npm start. Аргументы передаются после--, напримерnpm test -- --watch, есть хукиprebuildиpostbuild; - разовый запуск:
npxзапускает бинарник пакета без глобальной установки; - обновление:
npm outdatedпоказывает устаревшее,npm updateподнимает версии в пределах semver-диапазонов и мажорные не трогает. Мажорные обновляют отдельно, черезnpm i pkg@latest, прочитав changelog; - разбор дерева:
npm ls pkgиnpm explain pkgпоказывают, откуда взялась версия и почему пакет стоит дважды; подменить вложенную версию помогает полеoverrides; - безопасность:
npm auditиnpm audit fix; - свои библиотеки:
npm link, в монорепозитории workspaces и флаг-w.
Закончите своим примером: как чинили поломку после обновления или ускорили CI переходом на npm ci с кэшем.
Где спотыкаются
Используют npm install в CI. Сборка перестаёт быть воспроизводимой, а lock-файл меняется прямо на сервере.
При проблемах с зависимостями удаляют package-lock.json и ставят всё заново. Вместе с проблемой уезжают все зафиксированные версии, и приезжают новые баги.
Запускают npm audit fix --force не глядя. Он может поднять мажорную версию и сломать сборку, а часть уязвимостей сидит в devDependencies, которые до пользователя вообще не доходят.