Перейти до основного змісту

pnpm 10.15

· 2 хв читання
Zoltan Kochan
Lead maintainer of pnpm

Незначні зміни

Нові налаштування для каталогів

Додано конфігурацію cleanupunusedCatalogs. Якщо встановлено значення 'true', pnpm видалить невикористані записи каталогів під час встановлення #9793.

Покращення залежностей конфігурації

pnpm тепер автоматично завантажуватиме файли pnpm з config dependencies, які мають імена @*/pnpm-plugin-* #9780.

Зміни в конфігурації команд get/set

  • 'pnpm config get' тепер виводить рядок INI для значення обʼєкта #9797.

  • pnpm config get тепер приймає шляхи властивостей.

    Наприклад:

    pnpm config get catalog.react
    pnpm config get .catalog.react
    pnpm config get 'packageExtensions["@babel/parser"].peerDependencies["@babel/types"]'

    pnpm config set тепер приймає ключі з крапкою на початку або з індексом.

    Наприклад:

    pnpm config set .ignoreScripts true
  • Команда pnpm config get --json тепер видає JSON-серіалізацію значення конфігурації, а pnpm config set --json тепер аналізує вхідне значення як JSON.

Зміни в патчах

  • Напівруйнівні. Під час автоматичного встановлення відсутніх залежностей вузлів віддавайте перевагу версіям, які вже присутні в прямих залежностях пакунка кореневого робочого простору #9835.
  • Під час виконання команди pnpm create необхідно перевірити, чи підтримується версія вузла, навіть якщо кеш вже існує #9775.
  • Коли ви створюєте запити до пакунка, що не скорочується, додайте */* до Accept заголовка, щоб уникнути помилки 406 у AWS CodeArtifact #9862.
  • Самостійна версія pnpm у форматі exe знову працює з glibc 2.26 #9734.
  • Виправлено регресію, в якій pnpm dlx pkg --help не передає --help до pkg #9823.

pnpm 10.14

· 2 хв читання
Zoltan Kochan
Lead maintainer of pnpm

Додано підтримку визначення середовища виконання JavaScript

Вкажіть Node.js, Deno або Bun у devEngines.runtime (всередині package.json) і дозвольте pnpm завантажити і закріпити його автоматично.

Приклад використання:

{
"devEngines": {
"runtime": {
"name": "node",
"version": "^24.4.0",
"onFail": "download" // we only support the "download" value for now
}
}
}

Як це працює:

  1. pnpm install обробляє вказаний вами діапазон для отримання останньої відповідної версії середовища виконання.
  2. Точна версія (та контрольна сума) зберігається у файлі блокування.
  3. Скрипти використовують локальне середовище виконання, забезпечуючи узгодженість між середовищами.

Чому це краще:

  1. Цей новий параметр також підтримує Deno та Bun (на відміну від наших налаштувань лише для Node useNodeVersion та executionEnv.nodeVersion)
  2. Підтримуються діапазони версій (не лише фіксована версія).
  3. Отримана версія зберігається у файлі блокування pnpm разом з контрольною сумою цілісності для подальшої перевірки справжності вмісту Node.js.
  4. Можна використовувати в будь-якому проєкті робочого простору (наприклад, executionEnv.nodeVersion). Отже, різні проєкти в робочому просторі можуть використовувати різні середовища виконання.
  5. Наразі налаштування devEngines.runtime встановлює середовище виконання локально, але в майбутніх версіях pnpm ми вдосконалимо це, використовуючи спільне розташування на компʼютері.

Див. PR: #9755.

Інші нові функції

  • Додано --cpu, --libc та --os до pnpm install, pnpm add та pnpm dlx для налаштування supportedArchitectures через CLI #7510.

Виправлення помилок

  • Виправлено помилку, через яку pnpm add завантажує пакети, libc яких відрізняється від pnpm.supportedArchitectures.libc.
  • Цілісність завантажених Node.js артефактів тепер перевіряється #9750.
  • Дозволено dlx аналізувати прапорці та опції командного рядка між командою dlx та командою для запуску або між командою dlx та -- #9719.
  • Команда pnpm install --prod має видалити підняті залежності розробника #9782.
  • Виправлено помилку, через яку локальні архівні файли не перестворювали link у віртуальному сховищі. Ця помилка виникала при зміні вмісту архіву tar без перейменування файлу та запуску фільтрованої інсталяції.
  • Виправлено помилку, через яку pnpm install неправильно вважав, що файл блокування є актуальним після зміни локального архіву, що має залежні компоненти.

Рік 2022 для pnpm

· 4 хв читання
Zoltan Kochan
Lead maintainer of pnpm

Це кінець року. Справді важкий рік. Як ви, мабуть, знаєте, я живу в Україні, тому через війну росії проти нас мені було важче вести цей проєкт, ніж у попередні роки. Тим не менш, це був хороший рік для pnpm. У нас з’явилося багато нових користувачів, учасників, і ми реалізували багато чудових функцій.

(наведена вище ілюстрація була створена Midjourney. Тигр символізує рік тигра)

Рік 2021 для pnpm

· 4 хв читання
Zoltan Kochan
Lead maintainer of pnpm

Настає кінець року, і це був хороший рік для pnpm, тож погляньмо, як він пройшов.

Параметри конфігурації Node-модулів в pnpm

· 2 хв читання
Zoltan Kochan
Lead maintainer of pnpm

Існує багато способів створення теки node_ modules. Вашою метою має бути створення найсуворішого модуля, але якщо це неможливо, є варіанти створення довільних node_modules.

"Пласкі" node_modules — не єдиний спосіб

· 3 хв читання
Zoltan Kochan
Lead maintainer of pnpm

Нові користувачі pnpm часто запитують мене про дивну структуру node_modules, яку створює pnpm. Чому вона не пласка? Куди поділись усі залежності (sub-dependency)?