Javascript 使用bashscript启动多个nodemon

Javascript 使用bashscript启动多个nodemon,javascript,node.js,bash,shell,nodemon,Javascript,Node.js,Bash,Shell,Nodemon,我们使用的是微服务体系结构。我想使用一个bash脚本切换到我们服务的不同地区。我是bash新手,这是我的noobish尝试 #!/bin/bash #RUN THIS COMMAND BEFORE FIRST USE - sudo chmod u+x locale-changer.sh #DIRECTIONS #THIS SCRIPT ASSUMES YOU HAVE ALREADY STARTED NPM RUN LOCAL OR REGION=AA DEFAULT_MARKET=PT-BR

我们使用的是微服务体系结构。我想使用一个bash脚本切换到我们服务的不同地区。我是bash新手,这是我的noobish尝试

#!/bin/bash
#RUN THIS COMMAND BEFORE FIRST USE - sudo chmod u+x locale-changer.sh

#DIRECTIONS
#THIS SCRIPT ASSUMES YOU HAVE ALREADY STARTED NPM RUN LOCAL OR REGION=AA DEFAULT_MARKET=PT-BR NODE_ENV=local-qat2 grunt watch
#AFTER STARTING YOUR GRUNT SCRIPT OPEN A NEW TERMINAL TAB AND TYPE IN APPROPRIATE LOCALE NPM SCRIPT EXAMPLE npm run fc TO LAUNCH FRENCH CANADA LOCALE
#PLEASE SEE package.json, FOR LOCALE SPECIFIC SCRIPTS.

# NODEMON=nodemon

# if ! [ -x "$(command -v nodemon)" ]; then
#   echo 'nodemon not installed using node'
#   NODEMON=node
# fi

pid=$(lsof -i tcp:3000 -t); kill -TERM $pid || kill -KILL $pid
pid=$(lsof -i tcp:3001 -t); kill -TERM $pid || kill -KILL $pid
pid=$(lsof -i tcp:3002 -t); kill -TERM $pid || kill -KILL $pid
pid=$(lsof -i tcp:3003 -t); kill -TERM $pid || kill -KILL $pid
pid=$(lsof -i tcp:3004 -t); kill -TERM $pid || kill -KILL $pid
pid=$(lsof -i tcp:3005 -t); kill -TERM $pid || kill -KILL $pid
pid=$(lsof -i tcp:3006 -t); kill -TERM $pid || kill -KILL $pid
pid=$(lsof -i tcp:3008 -t); kill -TERM $pid || kill -KILL $pid

REGION=$1
DEFAULT_MARKET=$2
NODE_ENV=$3

echo "Starting services with REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV"
current_dir=$PWD;cd /path/to/your/command/dir;special command ARGS;cd $current_dir;
PORT=3003 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV node ../core-service1/app/server/server.js &
PORT=3002 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV node ../code-service2/app/server/server.js &
PORT=3000 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV nodemon ../router/app/server/server.js &
PORT=3001 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV node ./app/server/server.js &
PORT=3004 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV node ../core-service3/app/server/server.js &
PORT=3005 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV node ../core-service4/app/server/server.js &
PORT=3008 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV nodemon ../core-service5/app/server/server.js

trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT
问题是,我只想让nodemon重新启动它从中检测到更改的服务器。现在的情况是,如果我更改了其中一个服务器目录中的某个内容,nodemon不会接受任何更改。只有当我更改了进程最初启动的目录中的某些内容时,nodemon才会同时重新启动所有服务器


非常感谢您的耐心和建议

您是否愿意为此使用bash?您是否考虑过gulp或其他基于JS的构建工具


有一些库允许您协调多个流程、监视更改等,而无需重新设计流程。

您能提供更多详细信息吗?好的,我们的grunt脚本首先使用启动grunt脚本时提供的环境变量启动所有服务器和服务。要更改区域设置,您必须使用新的env变量重新启动整个grunt过程,这会耗费大量时间。这就是这个剧本发挥作用的地方。它只停止微服务,并用新的变量重新启动它们。不到5秒。我想添加的唯一一个很好的特性是Nodemon分别处理每个目录。Atm nodemon只查看主进程目录中的更改,并重新启动我们拥有的所有服务器grunt。但是在grunt上重新启动脚本花费的时间太长,因为重新启动grunt脚本的过程很长。需要运行测试,检查远程repo是否有更新的代码。Linting,整个过程大约需要1-2分钟,当您必须在区域设置之间移动时,这会占用开发时间。