npm lifecycle scripts


TIL, что в npm есть lifecycle scripts. Перед и после стандартных команд типа dev, build, test есть “хуки”, на которые можно подцепить нужные дополнительные команды.

| npm run dev | predevdevpostdev | | npm run build | prebuildbuildpostbuild | | npm test | pretesttestposttest |

Добавляете в package.json скрипт с префиксом pre или post — npm запустит их с соответствующем порядке:

{
"scripts": {
"build:client": "node esbuild.client.mjs",
"predev": "npm run build:client"
"dev": "tsx src/server/index.ts",
}
}

Сначала predev соберёт клиент, dev → запустит сервер.

Полезно, когда перед запуском надо что-то подготовить — собрать ассеты, проверить типы, создать папки.

Что можно с этим сделать:

  • prepublishOnly — проверки перед публикацией пакета в npm
  • prebuild — генерация кода или очистка папки dist
  • postinstall — автоматические действия после npm install

Подробнее: docs.npmjs.com/cli/v10/using-npm/scripts