Параметри збирання
ignoreScripts
- Стандартно: false
- Тип: Boolean
Не виконувати будь-які скрипти, визначені в package.json проєкту та його залежностях.
This flag does not prevent the execution of .pnpmfile.mjs
childConcurrency
- Стандартно: 5
- Тип: Number
Максимальна кількість дочірніх процесів, які можна одночасно виділити для збірки node_modules.
sideEffectsCache
- Стандартно: true
- Тип: Boolean
Використовувати та кешувати результати хуків (пре/пост)встановлення.
Коли скрипти (пре/пост)встановлення змінюють вміст пакунка (наприклад, вивід даних збірки), pnpm зберігає змінений пакунок у глобальному сховищі. При наступних інсталяціях на тій самій машині pnpm повторно використовує цю кешовану, попередньо зібрану версію, завдяки чому інсталяції відбуваються значно швидше.
Можливо, ви захочете вимкнути цей параметр, якщо:
- Скрипти встановлення змінюють файли поза текою пакунків (pnpm не може відстежувати або кешувати ці зміни).
- Скрипти виконують побічні ефекти, не повʼязані зі збіркою пакунка.
sideEffectsCacheReadonly
- Стандартно: false
- Тип: Boolean
Використовувати кеш побічних ефектів лише за наявності, не створювати його для нових пакунків.
unsafePerm
- Стандартно: false, ЯКЩО запуск від імені користувача root, ІНАКШЕ — true
- Тип: Boolean
Встановіть значення true, щоб увімкнути перемикання UID/GID під час запуску скриптів пакунків. Якщо явно вказати значення false, то встановлення від імені не root-користувача не вдасться.
nodeOptions
- Стандартно: NULL
- Типи: String
Параметри для передачі в Node.js через змінну оточення NODE_OPTIONS. Це не впливає на те, як виконується сам pnpm, але впливає на те, як викликаються сценарії життєвого циклу.
Щоб зберегти наявні NODE_OPTIONS, ви можете звернутися до поточної змінної оточення за допомогою ${NODE_OPTIONS} у вашій конфігурації:
nodeOptions: "${NODE_OPTIONS:- } --experimental-vm-modules"
verifyDepsBeforeRun
- Стандартно: install
- Тип: install, warn, error, prompt, false
Цей параметр дозволяє перевіряти стан залежностей перед запуском сценаріїв. Перевірка виконується для команд pnpm run і pnpm exec. Підтримуються наступні значення:
- install — Автоматично запускає встановлення, якщо
node_modulesне оновлено. - warn — Виводить попередження, якщо вміст
node_modulesне є актуальним. - prompt — Запитує у користувача дозвіл на запуск встановлення, якщо
node_modulesне оновлено. - error — Викликає помилку, якщо
node_modulesне є актуальним. - false — Вимикає перевірку залежностей.
strictDepBuilds
Додано у: v10.3.0
- Стандартно: true
- Тип: Boolean
Якщо увімкнено strictDepBuilds , інсталяція завершуватиметься з ненульовим кодом завершення, якщо будь-які залежності мають нерецензовані скрипти збірки (так звані післяінсталяційні скрипти).
allowBuilds
Додано у: v10.26.0
Набір відповідників пакунків, які явно дозволяють (true) або забороняють (false) виконання скриптів.
allowBuilds:
esbuild: true
core-js: false
# nx versions with build scripts not listed below will
# fail by default with ERR_PNPM_IGNORED_BUILDS
nx@21.6.4 || 21.6.5: true
nx@21.6.0: false
Git-hosted packages: a package name on its own never approves builds for a git or tarball dependency — the name alone does not identify the artifact. Approve one either by its exact resolved path (including the commit) or, since v11.11.0, by its repository URL:
allowBuilds:
# Approves any commit from this repository
'foo@git+ssh://git@example.com/org/foo.git': true
# Approves only this exact commit
'bar@git+https://github.com/org/bar.git#abc123': true
The repository form lets a trusted git dependency keep running its build scripts across branch updates without re-approving each new commit. The key is the package name, followed by @ and the git URL, with no #<ref> suffix. Matching is exact, so git+ssh:// and git+https:// URLs for the same repository are separate keys.
Since v11.19.0, the repository form also approves git-hosted packages that pnpm downloads as a tarball rather than clones — such as github: dependencies, which are fetched from codeload.github.com. A foo@git+https://github.com/org/foo.git entry approves foo whether pnpm clones the repository or downloads a tarball. GitLab and Bitbucket tarball downloads are matched the same way. Approving or denying a specific resolved commit by its full tarball dep path continues to work.
Denials by package name are not restricted this way: foo: false blocks foo whether it comes from the registry or from git.
Default behavior: Packages not listed in allowBuilds are disallowed by default and are treated as unreviewed. By default, an error is printed (strictDepBuilds defaults to true). Якщо для параметра strictDepBuilds встановлено значення false, замість цього виводиться попередження.
During install, dependencies with ignored builds that are not yet listed in allowBuilds are automatically added to pnpm-workspace.yaml with a placeholder value, so you can manually set them to true or false. The --allow-build flag on pnpm add and pnpm approve-builds writes its entries here as well.
To migrate these settings automatically, run pnpx codemod run pnpm-v10-to-v11 from the Migrating from v10 to v11 guide.
The following settings have been removed in v11 and replaced by allowBuilds: onlyBuiltDependencies, onlyBuiltDependenciesFile, neverBuiltDependencies, ignoredBuiltDependencies, and ignoreDepScripts.
До:
onlyBuiltDependencies:
- electron
neverBuiltDependencies:
- core-js
ignoredBuiltDependencies:
- esbuild
Після:
allowBuilds:
electron: true
core-js: false
esbuild: false
dangerouslyAllowAllBuilds
Додано у: v10.9.0
- Стандартно: false
- Тип: Boolean
Якщо встановлено значення true, усі скрипти збірки (наприклад, preinstall, install, postinstall) з залежностей будуть виконуватися автоматично, без необхідності схвалення.
Цей параметр дозволяє всім залежностям, включно з перехідними, запускати сценарії встановлення, як зараз, так і в майбутньому. Навіть якщо ваш поточний граф залежності здається безпечним:
- У майбутніх оновленнях можуть зʼявитися нові ненадійні залежності.
- До наявних пакунків можуть бути додані скрипти у пізніших версіях.
- Пакунки можуть бути перехоплені або скомпрометовані і почати виконувати шкідливий код.
Для максимальної безпеки вмикайте цю функцію, тільки якщо ви повністю усвідомлюєте ризики і довіряєте всій екосистемі, з якої ви отримуєте дані. Рекомендується переглядати і дозволяти збірки явним чином.