Інші налаштування
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 і не вкажете конкретну версію, то він встановить пакунок з версією, зареєстрованою з теґом з цього параметра.
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
- On macOS and Linux: ~/.local/state/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.
The patches are applied from Yarn's @yarnpkg/extensions package, plus pnpm's
own curated entries.
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. - Subdependencies will be resolved from versions that were published no later than one hour after the newest direct dependency. If none of those versions satisfies a subdependency's range, pnpm installs the lowest version that does.
If minimumReleaseAge is also set, pnpm resolves subdependencies against whichever of the two cutoffs is earlier. If no version published before that cutoff satisfies a subdependency's range, pnpm installs the lowest matching version that is older than the minimumReleaseAge cutoff. If every matching version is newer than the minimumReleaseAge cutoff, pnpm falls back to the lowest matching version, and minimumReleaseAgeStrict decides whether pnpm installs it or fails. Only the minimumReleaseAge cutoff decides which versions pnpm reports as too new. A version that is newer than the time-based cutoff but older than the minimumReleaseAge cutoff is installed without a warning or error.
У цьому режимі встановлення з "теплим" кеш відбувається швидше. Це також зменшує ймовірність перехоплення підзалежностей, оскільки підзалежності будуть оновлюватися лише тоді, коли оновлюються прямі залежності.
Цей режим працює лише з повними метаданими npm. Тому в деяких сценаріях це відбувається повільніше. Однак, якщо ви використовуєте Verdaccio v5.15.1 або новішу версію, ви можете встановити параметр registrySupportsTimeField у значення true, і він працюватиме дуже швидко.
Коли resolutionMode встановлено у lowest-direct, прямі залежності буде розвʼязано до їх найнижчих версій.
registrySupportsTimeField#
- Стандартно: false
- Тип: Boolean
Встановіть значення true, якщо реєстр, який ви використовуєте, повертає поле "time" у скорочених метаданих. Verdaccio supports this from v5.15.1, as do some registry proxies.
Since v11.23.0, this can also be declared per registry, through the supportsTimeField field of a registry declaration. A registry's own declaration wins; this setting is the answer for every registry the project does not describe.
extendNodePath#
- Стандартно: true
- Тип: Boolean
Якщо встановлено значення true, pnpm встановлює змінну середовища NODE_PATH у командних шимах (скрипти-обгортки, створені в теці node_modules/.bin). Якщо значення false, змінна NODE_PATH не встановлена.
Для чого це потрібно#
Ізольована структура node_modules у pnpm означає, що пакунок може отримати доступ лише до своїх власних оголошених залежностей. Однак коли інструмент CLI запускається через командний шим, деякі бібліотеки (зокрема import-local, яку використовують jest, eslint та інші) завантажують модулі з поточної робочої теки, а не з місця розташування самого бінарного файлу. Since the working directory is the project root, not the package inside
the virtual store, the standard node_modules resolution from the CWD won't
find the binary's transitive dependencies.
Щоб усунути цю проблему, pnpm додає до NODE_PATH два типи шляхів:
- The package's own dependencies directory (e.g.,
.pnpm/pkg@version/node_modules). This allows CWD-based resolution to find the correct versions of the package's sibling dependencies. - The hoisted
node_modulesdirectory (e.g.,.pnpm/node_modules). This is the directory where hoisted packages are placed whenhoistPatternis set. Node.js не може виявити цю теку за допомогою стандартного алгоритму визначення шляху, тому її потрібно вказати через зміннуNODE_PATH.
NODE_PATH також є важливим, коли увімкнено enableGlobalVirtualStore.
У випадку з глобальним віртуальним сховищем пакунки повʼязуються символічними посиланнями з центральним місцем поза межами проєкту, тому стандартний обхід Node.js вгору по node_modules від фактичного шляху до бінарного файлу не досягне власного node_modules проєкту або його піднятих залежностей. У цьому випадку змінна NODE_PATH повинна містити як кореневу теку проєкту node_modules, так і підняту теку node_modules/.pnpm/node_modules, щоб забезпечити правильне розпізнавання.
Since v11.28.0, when a project uses a custom modulesDir, NODE_PATH also
includes that directory, so a tool installed there can load CommonJS plugins
installed next to it, the way it would from node_modules. When executables
are symlinks (with preferSymlinkedExecutables
or the hoisted linker), this applies to pnpm run, pnpm exec, pnpm version
hooks, and the lifecycle scripts a project runs during install, but not to a
symlinked tool started directly from a shell. A path that contains the
platform's path-list separator (: or ;) does not get this fallback.
Коли слід вимикати#
Ви можете встановити для цього параметра значення false, якщо впевнені, що жоден із інструментів командного рядка у вашому проєкті не використовує модулі з робочої теки і ви не використовуєте глобальне віртуальне сховище. Якщо вимкнути цю функцію, отримаємо дещо простіші командні шими.
deployAllFiles#
- Стандартно: false
- Тип: Boolean
Під час розгортання пакунка або встановлення локального пакунка копіюються всі файли пакунка. Стандартно, якщо пакунок має поле "files" у package.json, то копіюються лише перелічені файли та теки. Symlinks that resolve outside the package directory cause the operation to fail.
dedupeDirectDeps#
- Стандартно: false
- Тип: Boolean
Якщо встановлено значення true, залежності, які вже привʼязано до кореневої теки node_modules робочої області, не буде привʼязано до теки node_modules вкладених проєктів.
optimisticRepeatInstall#
Додано у: v10.1.0
- Стандартно: true
- Тип: Boolean
Якщо увімкнено, буде виконано швидку перевірку перед початком інсталяції. Таким чином, повторне встановлення або встановлення в проєкті з усіма оновленнями стає набагато швидшим.
When the check finds that nothing changed, pnpm skips the install, including the projects' own lifecycle scripts, such as prepare. Set this to false to run those scripts on every install.
requiredScripts#
Scripts listed in this array are required in each project selected by pnpm -r run <script name>. Otherwise, the run fails.
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"
Since v11.26.0, a relative path in pnpm-workspace.yaml resolves from the workspace root, including for scripts that run in a nested package. A bare command name such as bash is still looked up on PATH.
shellEmulator#
- Стандартно: false
- Тип: Boolean
Якщо true, pnpm використовуватиме JavaScript-реалізацію bash-подібної оболонки для виконання скриптів.
Цей параметр спрощує написання крос-платформних скриптів. Наприклад, стандартно наступний скрипт не працюватиме в системах, не сумісних з POSIX:
"scripts": {
"test": "NODE_ENV=test node test.js"
}
Але якщо для параметра shellEmulator встановлено значення true, він працюватиме на всіх платформах.
Since v11.28.1, a configured non-empty scriptShell wins over shellEmulator
for pnpm run and lifecycle scripts. The emulator runs only when scriptShell
is unset or empty.
нотатка
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 (стандартно) — не додає автоматично залежності до каталогу.
Since v11.26.0, a specifier that names a location rather than a version is never moved into a catalog: local paths, local tarballs, tarball URLs, and workspace:<path> ranges stay in the package.json that declares them. Such a specifier is resolved relative to its own project, so one catalog entry could not mean the same directory for every project that references it.
ci#
Додано у: v10.12.1
- Стандартно: true (коли середовище визначається як CI)
- Тип: Boolean
Цей параметр явно вказує pnpm, чи є поточне середовище середовищем CI (безперервної інтеграції).
catalogPrune#
Додано у версії: v11.22.0 (як cleanupUnusedCatalogs починаючи з версії v10.15.0)
- Стандартно: false
- Тип: Boolean
Якщо встановлено значення 'true', pnpm видалить невикористані записи каталогів під час встановлення.
cleanupUnusedCatalogs — це застарілий варіант назви цього параметра, який продовжує працювати; якщо задано обидва параметри, пріоритет має catalogPrune.