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

pnpm 10.15

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

Minor Changes

New setting for catalogs

Added the cleanupUnusedCatalogs configuration. When set to true, pnpm will remove unused catalog entries during installation #9793.

Config dependency improvement

pnpm will now automatically load pnpmfiles from config dependencies that are named @*/pnpm-plugin-* #9780.

Changes to the config get/set commands

  • pnpm config get now prints an INI string for an object value #9797.

  • pnpm config get now accepts property paths.

    Наприклад:

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

    pnpm config set now accepts dot-leading or subscripted keys.

    Наприклад:

    pnpm config set .ignoreScripts true
  • pnpm config get --json now prints a JSON serialization of config value, and pnpm config set --json now parses the input value as JSON.

Patch Changes

  • Semi-breaking. When automatically installing missing peer dependencies, prefer versions that are already present in the direct dependencies of the root workspace package #9835.
  • When executing the pnpm create command, must verify whether the node version is supported even if a cache already exists #9775.
  • When making requests for the non-abbreviated packument, add */* to the Accept header to avoid getting a 406 error on AWS CodeArtifact #9862.
  • The standalone exe version of pnpm works with glibc 2.26 again #9734.
  • Fix a regression in which pnpm dlx pkg --help doesn't pass --help to 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)?