如何解决从npm脚本package.json捕获出口标志
是否可以挂接npm脚本的退出符号?
"scripts": {
"serve": "docker-compose up && npm start"
}
我希望能够使用docker-compose down
退出脚本时调用ctrl+c
使用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"
...
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。