Skip to content

Пакеты в npm могут определять скрипты жизненного цикла в своем package.json. Некоторые из наиболее распространенных приведены ниже, но есть многие другие.

  • preinstall: Выполняется перед установкой пакета
  • postinstall: Выполняется после установки пакета
  • postuninstall: Выполняется перед удалением пакета
  • prepublishOnly: Выполняется перед публикацией пакета

Эти скрипты представляют собой произвольные команды оболочки, которые менеджер пакетов должен прочитать и выполнить в соответствующее время. Но выполнение произвольных скриптов представляет потенциальный риск для безопасности, поэтому — в отличие от других клиентов npm — Bun по умолчанию не выполняет произвольные скрипты жизненного цикла.


postinstall

Скрипт postinstall особенно важен. Он широко используется для сборки или установки платформо-специфичных бинарных файлов для пакетов, реализованных как нативные дополнения Node.js. Например, node-sass — популярный пакет, использующий postinstall для сборки нативного бинарного файла для Sass.

json
{
  "name": "my-app",
  "version": "1.0.0",
  "dependencies": {
    "node-sass": "^6.0.1"
  }
}

trustedDependencies

Вместо выполнения произвольных скриптов Bun использует подход «безопасный по умолчанию». Вы можете добавить определенные пакеты в список разрешенных, и Bun будет выполнять скрипты жизненного цикла для этих пакетов. Чтобы разрешить выполнение скриптов жизненного цикла для конкретного пакета, добавьте имя пакета в массив trustedDependencies в вашем package.json.

json
{
  "name": "my-app",
  "version": "1.0.0",
  "trustedDependencies": ["node-sass"] 
}

После добавления в trustedDependencies выполните установку/переустановку пакета. Bun прочитает это поле и запустит скрипты жизненного цикла для my-trusted-package.

500 самых популярных пакетов npm со скриптами жизненного цикла разрешены по умолчанию. Полный список можно посмотреть здесь.


--ignore-scripts

Чтобы отключить скрипты жизненного цикла для всех пакетов, используйте флаг --ignore-scripts.

bash
bun install --ignore-scripts

Bun от www.bunjs.com.cn