Пакеты в npm могут определять скрипты жизненного цикла в своем package.json. Некоторые из наиболее распространенных приведены ниже, но есть многие другие.
preinstall: Выполняется перед установкой пакетаpostinstall: Выполняется после установки пакетаpostuninstall: Выполняется перед удалением пакетаprepublishOnly: Выполняется перед публикацией пакета
Эти скрипты представляют собой произвольные команды оболочки, которые менеджер пакетов должен прочитать и выполнить в соответствующее время. Но выполнение произвольных скриптов представляет потенциальный риск для безопасности, поэтому — в отличие от других клиентов npm — Bun по умолчанию не выполняет произвольные скрипты жизненного цикла.
postinstall
Скрипт postinstall особенно важен. Он широко используется для сборки или установки платформо-специфичных бинарных файлов для пакетов, реализованных как нативные дополнения Node.js. Например, node-sass — популярный пакет, использующий postinstall для сборки нативного бинарного файла для Sass.
{
"name": "my-app",
"version": "1.0.0",
"dependencies": {
"node-sass": "^6.0.1"
}
}trustedDependencies
Вместо выполнения произвольных скриптов Bun использует подход «безопасный по умолчанию». Вы можете добавить определенные пакеты в список разрешенных, и Bun будет выполнять скрипты жизненного цикла для этих пакетов. Чтобы разрешить выполнение скриптов жизненного цикла для конкретного пакета, добавьте имя пакета в массив trustedDependencies в вашем package.json.
{
"name": "my-app",
"version": "1.0.0",
"trustedDependencies": ["node-sass"]
}После добавления в trustedDependencies выполните установку/переустановку пакета. Bun прочитает это поле и запустит скрипты жизненного цикла для my-trusted-package.
500 самых популярных пакетов npm со скриптами жизненного цикла разрешены по умолчанию. Полный список можно посмотреть здесь.
--ignore-scripts
Чтобы отключить скрипты жизненного цикла для всех пакетов, используйте флаг --ignore-scripts.
bun install --ignore-scripts