Перейти к содержимому

Как обновить все пакеты npm package json

  • автор:

Как обновить или удалить пакет в NPM

Обновляем пакет в NPM до определенной или последней версии, а так же разбираемся как его удалить из проекта.

Дата публикации
8 Марта 2021
Дата изменения
8 Марта 2021
Уникальных просмотров

Оглавление

  • Обновление NPM-пакета до нужной версии
  • Обновление NPM-пакета до последней версии
  • Удаление NPM-пакета из проекта

Для начала необходимо проверить наличие обновлений для пакетов, сделать это можно с помощью команды:

Данная команда выведет вам список пакетов, которые прописаны в вашем package.json и укажет текущую версию и последнюю, до которой можно обновиться.

Пакеты в NPM обновляются с помощью системы семантического версионирования и имеют как правило 3 цифры разделенные точкой.

  • Major — версия, когда сделаны обратно несовместимые изменения.
  • Minor — версия, когда была добавлена новая функциональность, не нарушающая обратной совместимости.
  • Patch — версия, когда были сделаны обратно совместимые исправления (зачастую небольшие исправления багов).

При обновлении major версии пакета, лучше сначала проверить его работоспособность на dev версии проекта. И только после успешных тестов, обновлять на prod версии.

Обновление NPM-пакета до нужной версии

Чтобы обновить пакет до нужной версии, нужно вновь прописать команду npm i myPackageName и после добавить @packageVersion . Например:

npm i myPackage@7.0.0

При этом, не нужно добавлять в команду —save-dev или -D . NPM умный, он просто обновит пакет который записан в devDependencies и не перезапишет его в dependencies или наоборот.

Обновление NPM-пакета до последней версии

Если же вам не нужна определенная версия пакета, то можете просто прописать следующую команду:

npm i myPackage@latest

Данная команда установит последнюю стабильную версию пакета. Однако вам опять стоит обратить внимание на работу пакета, если обновляете major версию.

Удаление NPM-пакета из проекта

Для того чтобы удалить NPM-пакет из проекта, нужно прописать следующую команду:

npm uninstall myPackage

Данная команда удалит как сам пакет, так и все зависимости необходимые для его работы. Пакет будет удален как из файла package.json (из dependencies и devDependencies соответственно), так и из директории node_modules будет удалено все связанное с этим пакетом.

Благодарность автору

Если по какой-либо причине вы хотите поблагодарить автора данного ресурса, вы можете это сделать одним из удобных для вас способов ниже.

Один из самых популярных способов поблагодарить автора, воспользоваться сервисом Яндекс.Деньги.

NPM. Package.json. Установка модулей. Определение команд¶

Кроме встроенных и кастомных модулей Node.js существует огромный пласт различных библиотек и фреймворков, разнообразных утилит, которые создаются сторонними производителями и которые также можно использовать в проекте, например, express, grunt, gulp и так далее. И они тоже нам доступны в рамках Node.js. Чтобы удобнее было работать со всеми сторонними решениями, они распространяются в виде пакетов. Пакет по сути представляет набор функциональностей.

Для автоматизации установки и обновления пакетов, как правило, применяются систему управления пакетами или менеджеры. Непосредственно в Node.js для этой цели используется пакетный менеджер NPM (Node Package Manager). NPM по умолчанию устанавливается вместе с Node.js, поэтому ничего доустанавливать не требуется. Но можно обновить установленную версию до самой последней. Для этого в командной строке/терминале надо запустить следующую команду:

npm install npm@latest -g 

Чтобы узнать текущую версию npm , в командной строке/терминале надо ввести следующую команду:

npm -v 

Для нас менеджер npm важен в том плане, что с его помощью легко управлять пакетами. К примеру, создадим на жестком диске новую папку modulesapp (В моем случае папка будет находиться по пути C:\node\modulesapp ).

Далее для примера установим в проект express . Express представляет легковесный веб-фреймворк для упрощения работы с Node.js. В данном случае мы не будем пока подробно рассматривать фреймворк Express, так как это отдельная большая тема. А используем его лишь для того, чтобы понять, как устанавливаются сторонние модули в проект.

Для установки функциональности Express в проект вначале перейдем к папке проекта с помощью команды cd . Затем введем команду

npm install express 

2.4.png

После установки express в папке проекта modulesapp появится подпапка node_modules , в которой будут храниться все установленные внешние модули. В частности, в подкаталоге node_modules/express будут располагаться файлы фреймворка Express.

Далее определим файл простейшего сервера. Для этого в корневую папку проекта modulesapp добавим новый файл app.js :

 1 2 3 4 5 6 7 8 9 10 11
// получаем модуль Express const express = require('express'); // создаем приложение const app = express(); // устанавливаем обработчик для маршрута "/" app.get('/', function (request, response)  response.end('Hello from Express!'); >); // начинаем прослушивание подключений на 3000 порту app.listen(3000); 

Первая строка получает установленный модуль express , а вторая создает объект приложения.

В Express мы можем связать обработку запросов с определенными маршрутами. Например, / — представляет главную страницу или корневой маршрут. Для обработки запроса вызывается функция app.get() . Первый параметр функции — маршрут, а второй — функция, которая будет обрабатывать запрос по этому маршруту.

И чтобы сервер начал прослушивать подключения, надо вызвать метод app.listen() , в который передается номер порта.

Запустим сервер командой node app.js :

2.5.png

И в адресной строке браузера введем адрес http://localhost:3000/ :

2.6.png

Файл package.json¶

Для более удобного управления конфигурацией и пакетами приложения в npm применяется файл конфигурации package.json . Так, добавим в папку проекта modulesapp новый файл package.json :

1 2 3 4
 "name": "modulesapp", "version": "1.0.0" > 

Здесь определены только две секции: имя проекта — modulesapp и его версия — 1.0.0 . Это минимально необходимое определение файла package.json . Данный файл может включать гораздо больше секций. Подробнее можно посмотреть в документации.

Далее удалим из проекта каталог node_modules . То есть в папке проекта modulesapp будут два файла app.js и package.json .

Теперь снова добавим express с помощью следующей команды:

npm install express --save 

Флаг —save указывает, что информацию о добавленном пакете надо добавить в файл package.json .

2.7.png

И после выполнения команды, если мы откроем файл package.json , то мы увидим информацию о пакете:

1 2 3 4 5 6 7
 "name": "modulesapp", "version": "1.0.0", "dependencies":  "express": "^4.14.0" > > 

Информация обо всех добавляемых пакетах, которые используются при запуске приложения, добавляется в секцию dependencies .

Файл package.json играет большую роль и может облегчить разработку в различных ситуациях. Например, при размещении в разных репозиториях нередко мы ограничены выделяемым дисковым пространством, тогда как папка node_modules со всеми загруженными пакетами может занимать довольно приличное пространство. В этом случае удобнее разместить основной код проекта без node_modules . В этом случае мы можем определить все пакеты в файле package.json , а затем для загрузки всех пакетов выполнить команду

npm install 

Эта команда возьмет определение всех пакетов из секций dependencies и загрузит их в проект.

devDependencies¶

Кроме пакетов, которые применяются в приложении, когда оно запущено, например, express, то есть в состоянии «production», есть еще пакеты, которые применяются при разработке приложения и его тестировании. Такие пакеты добавляются в другую секцию — devDependencies . В вышеприведенном примере она не определена, но если бы мы добавили какой-нибудь grunt или gulp, то они бы были именно в секции devDependencies .

Например, загрузим в проект пакет jasmine-node , который используется для тестирования приложения:

npm install jasmine-node --save-dev 

Флаг —save-dev указывается, что информацию о пакете следует сохранить в секции devDependencies файла package.json :

 1 2 3 4 5 6 7 8 9 10
 "name": "modulesapp", "version": "1.0.0", "dependencies":  "express": "^4.14.0" >, "devDependencies":  "jasmine-node": "^1.14.5" > > 

Удаление пакетов¶

Для удаления пакетов используется команда npm uninstall . Например:

npm uninstall express 

Эта команда удаляет пакет из папки node_modules , в то же время в файле package.json информация о данном пакете остается. Чтобы удалить информацию также и из package.json , применяется флаг —save :

npm uninstall express --save 

Семантическое версионирование¶

При определении версии пакета применяется семантическое версионирование. Номер версии, как правило, задается в следующем формате major.minor.patch . Если в приложении или пакете обнаружен какой-то баг и он исправляется, то увеличивается на единицу число patch . Если в пакет добавляется какая-то новая функциональность, которая совместима с предыдущей версией пакета, то это небольшое изменение, и увеличивается число minor . Если же в пакет вносятся какие-то большие изменения, которые несовместимы с предыдущей версией, то увеличивается число major . То есть глядя на разные версии пакетов, мы можем предположить, насколько велики в них различия.

В примере с express версия пакета содержала, кроме того, дополнительный символ карет: ^4.14.0 . Этот символ означает, что при установке пакета в проект с помощью команды npm install будет устанавливаться последняя доступная версия от 4.14.0 . Фактически это будет последняя доступная версия в промежутке от 4.14.0 до 5.0.0 ( >=4.14.0 и

Команды npm¶

NPM позволяет определять в файле package.json команды, которые выполняют определенные действия. Например, определим следующий файл app.js :

1 2 3 4 5
let name = process.argv[2]; let age = process.argv[3]; console.log('name: ' + name); console.log('age: ' + age); 

В данном случае мы получаем переданные при запуске приложению параметры.

И определим следующий файл package.json :

1 2 3 4 5 6 7 8
 "name": "modulesapp", "version": "1.0.0", "scripts":  "start": "node app.js", "dev": "node app.js Tom 26" > > 

Здесь добавлена секция scripts , которая определяет две команды. Вообще команд может быть много в соответствии с целями и задачами разработчика.

Первая команда называется start . Она по сути выполняет команду node app.js , которая выполняет код в файле app.js

Вторая команда называется dev . Она также выполняет тот же файл, но при этом также передает ему два параметра.

Названия команд могут быть произвольными. Но здесь надо учитывать один момент. Есть условно говоря зарезервированные названия для команд, например, start , test , run и ряд других. Их не очень много. И как раз первая команда из выше определенного файла package.json называется start . И для выполнения подобных команд в терминале/командной строке надо выполнить команду

npm [название_команды] 

Например, для запуска команды start

Руководство разработчика по обновлению пакетов npm

Руководство разработчика по обновлению пакетов npm

Самый простой способ обновить пакеты npm — установить npm-check-updates , запустить npx ncu , а затем npx ncu -u обновить package.json, за которым следует npm install для обновления пакетов в package.lock и node_modules.

Ванильный подход к npm

npm поставляется с готовыми инструментами для обновления ваших пакетов.

При запуске npm outdated вы можете получить список пакетов с доступными обновлениями:

Мы можем обновить отдельные пакеты, запустив npm update .

Давайте попробуем это для последнего пакета в списке:

npm update sass 

Войти в полноэкранный режим Выйти из полноэкранного режима. Теперь, если мы снова запустим npm outdated , мы сможем (как видно на изображении ниже), что пакет действительно был обновлен. Следует отметить, что хотя package.lock был обновлен, package.json остается нетронутым.

Теперь мы можем сделать то же самое для всех пакетов, и если у вас есть критически важное для производства приложение, вы, вероятно, захотите уделить пристальное внимание пакетам, которые вы обновляете, и последствиям, которые может иметь обновление.

Обновления с помощью npm-check-updates

Еще один вариант, который я считаю несколько более удобным, особенно для проектов с меньшим риском, — это использование пакета npm-check-updates .

Чтобы установить его, просто запустите:

npm install -g npm-check-updates 

Войти в полноэкранный режим Выйти из полноэкранного режима.

После установки мы можем проверить наличие обновлений, запустив:

npx ncu 

Войти в полноэкранный режим Выйти из полноэкранного режима.

Подобно npm old , это дает нам список всех доступных обновлений:

Чтобы обновить один единственный пакет, мы можем запустить:

npx ncu -uf sass 

Войти в полноэкранный режим Выйти из полноэкранного режима

npm install 

Войти в полноэкранный режим Выйти из полноэкранного режима.

Теперь, если мы снова запустим npx ncu , мы увидим, что пакет sass был обновлен:

Что хорошо в пакете npm-check-updates, так это то, что мы также можем обновить все пакеты, если захотим, выполнив:

npx ncu -u 

Войти в полноэкранный режим Выйти из полноэкранного режима, а затем снова:

npm install 

Войти в полноэкранный режим Выйти из полноэкранного режима.

Теперь, если мы снова запустим npx ncu , мы получим:

Теперь и package.json , и package.lock были обновлены, так что стало понятнее, какие версии пакетов у нас есть, без необходимости заглядывать в package. заблокировать файл.

Заключение

Если вы хотите легко обновить все свои пакеты, вы можете использовать пакет npm npm-check-updates с командами, показанными выше, в противном случае вы также можете использовать встроенные команды npm npm устарел и обновление npm .

Ссылки

  • https://www.npmjs.com/package/npm-check-updates
  • https://docs.npmjs.com/cli/v7/commands

Как обновить опубликован­ный пакет npm

Предположим, мы успешно опубликовали npm пакет и можем посмотреть его по адресу:

https://npmjs.com/package/

Теперь предположим, что мы сделали обновление, но npm publish выдаёт ошибку You cannot publish over the previously published versions

Как правильно обновить пакет?

Семантическое управление версиями Node JS

Обновляя содержимое нашего пакета, мы обновляем версию пакета. Прежде чем указывать номер версии, обязательно ознакомьтесь с семантическим управлением версиями.

Итак, предположим, что у нас версия 1.0.0 (major/мажорная.minor/минорная.patch/патч):

Если обновление представляет собой выпуск исправлений (небольшие изменения), нам нужно увеличить последнюю часть номера версии (patch/патч).

npm version patch

Если обновление, это минорный релиз (новые возможности), нам нужно увеличить среднюю часть номера версии (minor/минорная).

npm version minor

Если это мажорный релиз (обновление основного функционала или исправление основных проблем), нам нужно увеличить первую часть номера версии (major/мажорная).

npm version major

Инструкция по обновлению

Во-первых, я предполагаю, что мы находимся в локальном корневом каталоге пакета, который хотим обновить.

Давайте войдём в npm .

npm login

Давайте изменим нашу версию. Мы можем указать конкретную версию или использовать patch , minor или major обновления.

npm version 1.0.2 
npm version patch

Теперь мы можем опубликовать текущую версию.

npm publish

Наконец, мы можем проверить, правильно ли всё опубликовалось.

https://npmjs.com/package/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *