Як оновити пакети npm до їх останньої версії

У будь-якому проекті NodeJS вам потрібно буде часто оновлювати залежність вашого пакета. На щастя, процес простий і його можна зробити за лічені хвилини. Звичайно, ви хочете перевірити будь-які оновлення з допомогою якісного контролю та, сподіваємось, деяких автоматизованих тестів (тестова рамка чи інструмент CI можуть бути корисними).


Як оновити ваші пакунки

Команда npm update дозволяє оновлювати застарілі пакети відповідно до версій пакета.json. Це типовий спосіб оновлення пакетів з npm.

Як мені знати, які пакунки мають оновлення?

Один з вбудованих способів перевірити, які пакунки застаріли – це запустити застарілу команду npm.

Ще один спосіб, який я віддаю перевагу, – це використовувати модуль npm-check-updates (ncu). Цей пакет дозволяє легко оновити залежності свого package.json до останніх версій модулів незалежно від обмежень версій у цих файлах. Потім за допомогою команд npm install або npm update можна оновити встановлені пакети.

У решті цієї статті ми розглянемо різні інструменти NodeJS для оновлення пакетів npm до їх останньої версії, з обмеженнями семантичного версії або без них. Зокрема, ми покриємо:

Стривайте вперед, використовуючи посилання вище або читайте далі, щоб вивчити світ оновлення пакетів npm!

Семантична версія: мажор, мінор, & Діапазони версій заплатки

Будь-які пакети npm або bower можуть використовувати семантичну версію (semver), як зазначено на веб-сайті semver.org. Це означає, що версія пакета може складатися з трьох компонентів:

  1. ГОЛОВНІ версія для коли є несумісні зміни API
  2. МИНОР версія для того, коли функціональність додається назад сумісним чином
  3. ПАТЧ версія для того, коли зроблено зворотні сумісні помилки

Node-semver – це пакет, який розбирає semvers, а також розуміє деякі додаткові синтаксиси semver, такі як: базові діапазони, діапазони нахилу, теги перед випуском, діапазони карет, діапозитивні знаки та діапазони x.

Як користувач пакетів NodeJS, ви можете вказати, які типи оновлень ваша програма може прийняти у файлі package.json. Наприклад, якщо ви починали з версії пакета 1.0.4, саме так ви могли вказати дозволені діапазони версій оновлення трьома основними способами:

  • Щоб дозволити випуски Patch: 1.0 або 1.0.x або ~ 1.0.4
  • Щоб дозволити незначні випуски: 1 або 1.x або ^ 1.0.4
  • Дозволити основні релізи: * або х

Більш дрібнодисперсні діапазони версій також доступні, якщо ви використовуєте додатковий синтаксис semver, згаданий вище.

Спочатку встановіть вузол, npm, & ncu

Якщо ви ще цього не зробили, перегляньте цей посібник із встановлення вузла та npm.

Тепер ми можемо встановити інструмент ncu у всьому світі, ввівши наступне:

1 npm install -g npm-check-updates

Перш за все, вам можуть знадобитися права користувача root; якщо так, введіть “sudo” перед цією командою:

1 sudo npm install -g npm-check-updates

Давайте подивимось на синтаксис довідки ncu:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

$ ncu – допомогти

 

Використання: ncu [параметри] [фільтр]

[filter] – це список або регекс імен пакетів для перевірки (усі інші будуть ігноровані).

 

Параметри:

-h, –допомога інформації про використання вихідних даних

-V, – вихідний номер версії

-d, –dev перевіряє лише devDependitions

-e, – рівень помилки <н>        встановити рівень помилки.

                                1: вихід із кодом помилки 0, якщо помилок не трапляється.

                                2: вихід із кодом помилки 0, якщо не потрібні пакети

                                оновлення (корисно для постійної інтеграції). За замовчуванням – 1.

-g, –global перевірити глобальні пакети замість поточного проекту

-j, –jsonВсі виведіть новий файл пакету замість прочитаного людиною повідомлення

–jsonUpgraded вихідні оновлені залежності в json

-l, –рівень <н>           про який рівень журналів повідомляти: мовчати, помиляти, попереджати,

                                інформація, багатослівна, нерозумна (за замовчуванням: попереджаю)

-м, –packageManager <назва>  npm (за замовчуванням) або bower

-o, –обов’язково перевірити лише необов’язковізалежності

–packageData включає в себе розширений файл пакету (замість цього використовується stdin)

–пакетFile <ім’я файлу>     розташування файлу пакета (за замовчуванням: ./package.json)

-p, –провід перевіряє лише залежності (не devDependitions)

-r, –реєстр <URL>         вказати сторонній реєстр npm

-s, –silent нічого не виводить (–loglevel silent)

-t, –найбільше знайти найвищі версії, доступні замість

                                останні стабільні версії

-u, –оновіть перезаписувати пакет пакету

-a, –upgradeAll включає навіть ті залежності, чия остання версія

                                задовольняє заявлену залежну залежність

Тепер проект зразка NodeJS

Давайте створимо зразковий проект NodeJS під назвою «foo», який ми дозволимо залежати від більш старої версії пакету «express» та «request», щоб показати, як оновити пакети за допомогою команд встановлення, оновлення та ncu:

1
2
3
4
5

mkdir foo

cd foo

npm init

[відповісти на запитання npm init]

npm install –save [email protected] [email protected]

Тепер наш package.json буде виглядати приблизно так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

{

  "назва": "foo",

  "версія": "1.0.0",

  "опис": "foo",

  "головний": "index.js",

  "сценарії": {

    "тест": "тест"

  },

  "ключові слова": [

    "foo"

  ],

  "автор": "жоден",

  "ліцензія": "ISC",

  "залежності": {

    "експрес": "^ 3.1.2",

    "запит": "^ 1.9.9"

  }

}

Ми бачимо, як npm встановив старіші версії цих двох пакетів із найвищої дозволеної та доступної пакувальної версії та оновив файл package.json.

Перевірка можливих оновлень

Щоб побачити, які пакети мають доступні оновлення, ми можемо скористатися інструментом ncu або застарілою командою npm.

Виявлення оновлень за допомогою npm

Якщо ми хотіли перевірити наявність пакетів з оновленнями, ви можете скористатися застарілою командою npm:

1
2
3
4

$ npm застаріло

Поточний пошук у найсвіжішому пакеті

експрес 3.1.2 3.21.2 4.13.3 експрес

запит 1.9.9 1.9.9 2.67.0 запит

Ми бачимо, що версія пакета «запит» відповідає тому, що ми хотіли (як це заявив наш semver під час встановлення), але є нова основна версія. Для пакету «експрес» ми бачимо, що і в розшукуваній, і в останній версії доступні новіші версії.

Виявлення оновлень за допомогою ncu

За допомогою інструмента ncu ми також можемо виявити, які пакунки мають новіші версії:

1
2
3

$ ncu

виразити ^ 3.1.2  -&gt; ^ 4.13.3

запит ^ 1.9.9  -&gt; ^ 2.67.0

Ми бачимо, що для обох пакетів доступні основні оновлення.

Суворі та не строгі версійні оновлення

Ми можемо дозволити або суворі версії оновлень (строго в межах наших пакетів.json semver обмежень), або не строгі версійні оновлення (оновити незалежно від наших обмежень semver).

Суворі універсальні оновлення з використанням npm

Давайте скористаємося командою npm update, щоб дозволити суворі версії оновлень:

1 $ npm оновлення

Тепер давайте подивимося на npm застарілий знову:

1
2
3
4

$ npm застаріло

Поточний пошук у найсвіжішому пакеті

вираз 3.21.2 3.21.2 4.13.3 експрес

запит 1.9.9 1.9.9 2.67.0 запит

Добре, оновлення npm зробило те, про що ми просили, і не більше!

Не суворі універсальні оновлення за допомогою ncu

Для не строгих версійних оновлень є кілька варіантів командного рядка, які ми можемо використовувати з ncu.

ncu – оновлення [пакет]

Щоб оновити пакет “запит” до його найновішої основної версії, ми могли б зробити наступне:

1
2

$ ncu – запит на оновлення

запит ^ 1.9.9  -&gt; ^ 2.67.0

Це оновить semver package.json для пакета “запит”:

1
2
3
4

  "залежності": {

    "експрес": "^ 3.1.2",

    "запит": "^ 2.67.0"

  }

Зауважте, що інструмент ncu підтримує існуючу політику семантичної версії (наприклад, “дозволити лише незначні оновлення”, в нашому випадку) під час оновлення файлу package.json. Отже, основну версію пакета “запит” було збільшено, але політика щодо дозволу лише незначних оновлень після оновлення npm все ще діє.

Тепер нам потрібно встановити оновлену версію пакета за допомогою npm install:

1 npm встановити

Перевіримо встановлену версію пакета “запит”:

1
2
3

$ npm список запиту

[email protected] / home / user / foo

| — запит@2.67.0

ncu – оновлення

Для оновлення всіх наших залежностей від пакета в package.json (включаючи наш пакет «експрес»), ми зробимо наступне:

1
2

ncu – оновлення

npm встановити

ncu –upgradeAll

Інструмент ncu може встановлювати новіші версії пакета згідно з обмеженнями semver package.json, але не оновлює ці новіші версії у файлі package.json.

Якщо ви хочете примусити записати ці нововстановлені версії пакету на ваш package.json, ви можете скористатися опцією –upgradeAll. Хоча це і не потрібно, ця функціональність є, якщо ви цього хочете.

Щоб примусити перезаписати версії пакета package.json на їх останню (дозволено напівнадання), конкретний номер версії, введіть:

1
2

ncu – UpgradeAll

npm встановити

Фільтрування за допомогою ncu

Ми також могли б оновити пакети, що відповідають деяким синтаксисам регулярних виразів.

Наприклад, це відповідатиме та модернізувати всі пакети, починаючи з “gulp-“:

1 ncu –поновлення / ^ gulp- /

Щоб перевірити лише пакети “залежності”, а не пакети “devDependitions”, виконайте наступне:

1 $ ncu -p

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

Використання bower.json

Щоб використовувати файл bower.json з ncu, ви вкажете цей параметр у командному рядку:

1 $ ncu -m bower

Заключні слова щодо оновлення пакету npm

NodeJS має чудовий інструмент для гнучкого управління пакунками та версій залежностей. Обов’язково ознайомтеся з документацією npm, щоб дізнатися більше про управління пакетами npm та найкращі практики.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Adblock
    detector