我正在容器中运行开发数据库。
我打算使用npm
自动启动和停止容器,因此我在pre
上添加了一些post
和package.json
脚本:
"prewatch": "docker start mongo",
"watch": "nodemon app.js",
"postwatch": "docker stop mongo"
我发现的问题是,我用post
关闭了nodemon
后,我的Ctrl+C
脚本无法运行。
有什么想法可以克服吗?
答案 0 :(得分:0)
是否会在nodemon config脚本中添加events来解决您的问题?
例如,通过package.json:
{
"nodemonConfig": {
"events": {
"crash": "docker stop mongo"
}
}
}
更新:
TLDR:nodemon事件在这里不起作用,禁用restartable
可以实现预期的行为。
像这样添加到配置restartable: false
中:
"scripts": {
"prestart": "echo \"npm:prestart\"",
"start": "nodemon server.js",
"poststart": "echo \"npm:poststart\""
},
"nodemonConfig": {
"restartable": false,
"events": {
"start": "echo \"Start event\"",
"crash": "echo \"Crash event\"",
"exit": "echo \"Exit event\""
}
},
以npm start -- -V
开始,然后按Ctrl+c
两次,我得到以下信息:
> nodemon_events@1.0.0 prestart /home/kyr/test/nodemon_events
> echo "npm:prestart"
npm:prestart
> nodemon_events@1.0.0 start /home/kyr/test/nodemon_events
> nodemon server.js "-V"
[nodemon] 2.0.3
[nodemon] reading config ./package.json
[nodemon] send SIGHUP to 8929 to restart
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] bind start -> `echo "Start event"`
[nodemon] bind crash -> `echo "Crash event"`
[nodemon] bind exit -> `echo "Exit event"`
[nodemon] starting `node server.js`
[nodemon] forking
[nodemon] child pid: 8942
Start event
[nodemon] watching 2 files
server:run
[nodemon] exiting
> nodemon_events@1.0.0 poststart /home/kyr/test/nodemon_events
> echo "npm:poststart"
npm:poststart
看起来有些奇怪,但可以解决您的问题。