Інші налаштування
savePrefix
- Стандартно: '^'
- Type: '^', '~', '', '='
Налаштуйте спосіб префіксації версій пакунків, встановлених до файлу package.json.
Наприклад, якщо пакунок має версію 1.2.3, стандартно його версію встановлено як ^1.2.3, що дозволяє незначні оновлення для цього пакунка, але після pnpm config set save-prefix='~' його буде встановлено як ~1.2.3, що дозволяє лише оновлення патчів.
Since v11.19.0, = is also accepted: newly added dependencies are saved with an
explicit = operator (=1.2.3), which pins the exact version. pnpm update
keeps the = operator when it updates such a pin.
Цей параметр ігнорується, якщо доданий пакунок має вказаний діапазон. Наприклад, pnpm add foo@2 встановить версію foo у package.json на 2, незалежно від значення savePrefix .
tag
- Стандартно: latest
- Типи: String
Якщо ви додасте пакунок pnpm add і не вкажете конкретну версію, то він встановить пакунок з версією, зареєстрованою з теґом з цього параметра.
Це також встановлює теґ, який буде додано до package@version, вказаного командою pnpm tag, якщо явно не вказано жодного теґу.
globalDir
- Стандартно:
- Якщо встановлено змінну середовища $XDG_DATA_HOME, тоді $XDG_DATA_HOME/pnpm/global
- У Windows: ~/AppData/Local/pnpm/global
- В macOS: ~/Library/pnpm/global
- У Linux: ~/.local/share/pnpm/global
- Тип: path
Вкажіть власну теку для зберігання глобальних пакунків.
globalBinDir
- Стандартно:
- Якщо встановлено змінну середовища $XDG_DATA_HOME, тоді $XDG_DATA_HOME/pnpm/bin
- У Windows: ~/AppData/Local/pnpm/bin
- В macOS: ~/Library/pnpm/bin
- У Linux: ~/.local/share/pnpm/bin
- Тип: path
Дозволяє задати цільову теку для bin-файлів глобально встановлених пакунків.
У pnpm v11 глобально встановлені бінарні файли зберігаються в субтеці bin теки PNPM_HOME, а не безпосередньо в теці PNPM_HOME. Це запобігає тому, щоб внутрішні теки, такі як global/ та store/, заважали роботі автозавершення командного рядка, коли змінна PNPM_HOME знаходиться у шляху PATH. Після оновлення запустіть команду pnpm setup, щоб оновити налаштування оболонки.
npmrcAuthFile
Додано у: v11.0.0
- Стандартно: ~/.npmrc
- Тип: path
Шлях до файлу, що містить токени автентифікації реєстру. У стандартній конфігурації pnpm зчитує токени автентифікації з файлу ~/.npmrc як запасний варіант для автентифікації в реєстрі. Використовуйте цей параметр, щоб вказати на інший файл.
This setting cannot be set in pnpm-workspace.yaml at the project level; set it in the global configuration file, via the --npmrc-auth-file CLI option, or via the PNPM_CONFIG_NPMRC_AUTH_FILE environment variable (the npm-style NPM_CONFIG_USERCONFIG is honored as a fallback). A relative path is resolved against the working directory.
stateDir
- Стандартно:
- Якщо встановлено змінну середовища $XDG_STATE_HOME, тоді $XDG_STATE_HOME/pnpm
- У Windows: ~/AppData/Local/pnpm-state
- В macOS: ~/.pnpm-state
- У Linux: ~/.local/share/pnpm
- Тип: path
Тека, у якій pnpm створює файл pnpm-state.json, який наразі використовується лише у програмі перевірки оновлень.
cacheDir
- Стандартно:
- Якщо встановлено змінну середовища $XDG_CACHE_HOME, тоді $XDG_CACHE_HOME/pnpm
- У Windows: ~/AppData/Local/pnpm-cache
- В macOS: ~/Library/Caches/pnpm
- У Linux: ~/.cache/pnpm
- Тип: path
Розташування кешу (метадані пакунка, кеш dlx та деякі результати перевірки встановлення).
Так само як і сховище, тека кешу призначена для спільного використання виключно між користувачами, завданнями та процесами, які взаємно довіряють один одному. Якщо ви налаштовуєте спільну cacheDir , забезпечте її захист за допомогою прав доступу до файлової системи, щоб ненадійні користувачі не могли записувати в неї дані.
useStderr
- Стандартно: false
- Тип: Boolean
Якщо значення true, весь вивід записується у stderr.
updateNotifier
- Стандартно: true
- Тип: Boolean
Встановіть значення false, щоб приховати сповіщення про оновлення при використанні старішої версії pnpm, ніж остання.
preferSymlinkedExecutables
- Стандартно: true, коли node-linker встановлено у hoisted і система є POSIX
- Тип: Boolean
Створіть символічні посилання на виконувані файли у node_modules/.bin замість команд shims. Цей параметр ігнорується у Windows, де працюють лише командні shims.
ignoreCompatibilityDb
- Стандартно: false
- Тип: Boolean
Під час встановлення автоматично виправляються залежності деяких пакунків. Якщо ви хочете вимкнути цей параметр, встановіть для нього значення true.
Виправлення застосовуються з пакунка Yarn @yarnpkg/extensions.
resolutionMode
- Стандартно: highest (було lowest-direct з v8.0.0 до v8.6.12)
- Тип: highest, time-based, lowest-direct
Коли resolutionMode встановлено у time-based, залежності буде розвʼязано у такий спосіб:
- Прямі залежності будуть вирішені до найнижчих версій. Отже, якщо у залежностях є
foo@^1.1.0, то буде встановлено1.1.0. - Підзалежності будуть врегульовані, починаючи з версій, які були опубліковані до того, як була опублікована остання пряма залежність.
У цьому режимі встановлення з "теплим" кеш відбувається швидше. Це також зменшує ймовірність перехоплення підзалежностей, оскільки підзалежності будуть оновлюватися лише тоді, коли оновлюються прямі залежності.
Цей режим працює лише з повними метаданими npm. Тому в деяких сценаріях це відбувається повільніше. Однак, якщо ви використовуєте Verdaccio v5.15.1 або новішу версію, ви можете встановити параметр registrySupportsTimeField у значення true, і він працюватиме дуже швидко.
Коли resolutionMode встановлено у lowest-direct, прямі залежності буде розвʼязано до їх найнижчих версій.
registrySupportsTimeField
- Стандартно: false
- Тип: Boolean
Встановіть значення true, якщо реєстр, який ви використовуєте, повертає поле "time" у скорочених метаданих. Наразі цю функцію підтримує лише Verdaccio з версії 5.15.1.
extendNodePath
- Стандартно: true
- Тип: Boolean
Якщо встановлено значення true, pnpm встановлює змінну середовища NODE_PATH у командних шимах (скрипти-обгортки, створені в теці node_modules/.bin). Якщо значення false, змінна NODE_PATH не встановлена.
Для чого це потрібно
Ізольована структура node_modules у pnpm означає, що пакунок може отримати доступ лише до своїх власних оголошених залежностей. Однак коли інструмент CLI запускається через командний шим, деякі бібліотеки (зокрема import-local, яку використовують jest, eslint та інші) завантажують модулі з поточної робочої теки, а не з місця розташування самого бінарного файлу. Оскільки робочою текою є коренева тека проекту, а не пакунок у віртуальному сховищі, стандартне визначення node_modules з поточної робочої теки не знайде транзитивних залежностей бінарного файлу.
Щоб усунути цю проблему, pnpm додає до NODE_PATH два типи шляхів:
- Власна тека залежностей пакунка (наприклад,
.pnpm/pkg@version/node_modules) — це дозволяє системі визначення залежностей на основі поточного робочого каталогу (CWD) знаходити правильні версії супутніх залежностей пакунка. - Піднята тека
node_modules(наприклад,.pnpm/node_modules) — це тека, куди переміщуються підняті пакунки, коли встановлено параметрhoistPattern. Node.js не може виявити цю теку за допомогою стандартного алгоритму визначення шляху, тому її потрібно вказати через зміннуNODE_PATH.
NODE_PATH також є важливим, коли увімкнено enableGlobalVirtualStore.
У випадку з глобальним віртуальним сховищем пакунки повʼязуються символічними посиланнями з центральним місцем поза межами проєкту, тому стандартний обхід Node.js вгору по node_modules від фактичного шляху до бінарного файлу не досягне власного node_modules проєкту або його піднятих залежностей. У цьому випадку змінна NODE_PATH повинна містити як кореневу теку проєкту node_modules, так і підняту теку node_modules/.pnpm/node_modules, щоб забезпечити правильне розпізнавання.
Коли слід вимикати
Ви можете встановити для цього параметра значення false, якщо впевнені, що жоден із інструментів командного рядка у вашому проєкті не використовує модулі з робочої теки і ви не використовуєте глобальне віртуальне сховище. Якщо вимкнути цю функцію, отримаємо дещо простіші командні шими.
deployAllFiles
- Стандартно: false
- Тип: Boolean
Під час розгортання пакунка або встановлення локального пакунка копіюються всі файли пакунка. Стандартно, якщо пакунок має поле "files" у package.json, то копіюються лише перелічені файли та теки.
dedupeDirectDeps
- Стандартно: false
- Тип: Boolean
Якщо встановлено значення true, залежності, які вже привʼязано до кореневої теки node_modules робочої області, не буде привʼязано до теки node_modules вкладених проєктів.
optimisticRepeatInstall
Додано у: v10.1.0
- Стандартно: true
- Тип: Boolean
Якщо увімкнено, буде виконано швидку перевірку перед початком інсталяції. Таким чином, повторне встановлення або встановлення в проєкті з усіма оновленнями стає набагато швидшим.
requiredScripts
Скрипти, перелічені у цьому масиві, будуть потрібні у кожному проєкті робочого простору. Інакше виконання pnpm -r run <script name> завершиться невдачею.
requiredScripts:
- build
enablePrePostScripts
- Стандартно: true
- Тип: Boolean
Якщо true, pnpm автоматично виконуватиме будь-які пре/пост-скрипти. Отже, виконання pnpm foo буде подібне до виконання pnpm prefoo && pnpm foo && pnpm postfoo.
scriptShell
- Стандартно: null
- Тип: path
Оболонка для запуску скриптів за допомогою команди pnpm run.
Наприклад, щоб примусово використовувати Git Bash у Windows:
pnpm config set scriptShell "C:\Program Files\git\bin\bash.exe"
shellEmulator
- Стандартно: false
- Тип: Boolean
Якщо true, pnpm використовуватиме JavaScript-реалізацію bash-подібної оболонки для виконання скриптів.
Цей параметр спрощує написання крос-платформних скриптів. Наприклад, стандартно наступний скрипт не працюватиме в системах, не сумісних з POSIX:
"scripts": {
"test": "NODE_ENV=test node test.js"
}
Але якщо для параметра shellEmulator встановлено значення true, він працюватиме на всіх платформах.
Node.js 22 або вище підтримує виконання скриптів без допомоги pnpm. Для наведеного вище прикладу ви можете запустити скрипт test за допомогою команди node --run test. Однак опція shellEmulator не впливає на це. Скрипти, що залежать від функцій POSIX, повинні виконуватися за допомогою команди pnpm run замість node --run, щоб працювати в середовищах, що не відповідають стандарту POSIX.
catalogMode
Додано у: v10.12.1
- Стандартно: manual
- Тип: manual, strict, prefer
Керує тим, чи додаються залежності до стандартного каталогу при виконанні pnpm add, і якщо так, то як саме. Є три режими:
- strict — дозволяє лише версії залежностей з каталогу. Додавання залежності за межами діапазону версій каталогу призведе до помилки.
- prefer — надає перевагу версіям з каталогу, але повертається до прямих залежностей, якщо сумісну версію не знайдено.
- manual (стандартно) — не додає автоматично залежності до каталогу.
ci
Додано у: v10.12.1
- Стандартно: true (коли середовище визначається як CI)
- Тип: Boolean
Цей параметр явно вказує pnpm, чи є поточне середовище середовищем CI (безперервної інтеграції).
cleanupUnusedCatalogs
Додано у: v10.15.0
- Стандартно: false
- Тип: Boolean
Якщо встановлено значення 'true', pnpm видалить невикористані записи каталогів під час встановлення.