簡體   English   中英

從 npm 腳本 package.json 中捕獲退出標志

[英]Catch exit sign from npm script package.json

是否可以掛鈎 npm 腳本的退出標志?

"scripts": {
    "serve": "docker-compose up && npm start"
}

我希望能夠在使用ctrl+c退出腳本時調用docker-compose down

使用 shell 腳本,這可以通過“捕獲”簽名出口 0 來實現

#!/bin/bash

trap 'docker-compose down ; echo Stopped ; exit 0' SIGINT

docker-compose up &
npm start

done

我寧願不使用 shell 腳本,這樣它就可以在 Unix 類系統以外的其他操作系統上運行。

我寧願不使用 shell 腳本,這樣它就可以在 Unix 類系統以外的其他操作系統上運行。

您可以在 Node.js 中編寫腳本,使其與任何可以運行npm start操作系統兼容。

#!/usr/bin/env node

'use strict';
const childProcess = require('child_process');

childProcess.spawnSync('docker-compose', ['up'], { stdio: 'inherit'});

process.on('SIGINT', () => {
  console.log('SIGINT caught, running docker-compose down');
  childProcess.spawnSync('docker-compose', ['down'], { stdio: 'inherit' });
  process.exit(0);
});

console.log('go ahead, press control-c');
childProcess.spawnSync('npm', ['start'], { stdio: 'inherit' });

在后台運行 docker compose (-d) 時,我能夠在 npm 腳本 (package.json) 中使用您的初始腳本。

"scripts": {
   ...
   "up": "trap 'docker-compose down ; echo Stopped ; exit 0' SIGINT; docker-compose up -d && npm start"
   ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM