这是我之前尝试使用 npm 脚本进行设置时遇到的一个问题,但我无法解决它。甚至不确定这是可能的,最好我希望该解决方案在 Mac 和 Windows 环境中都可以工作。
我正在尝试将我的 npm 脚本的一些逻辑拆分为几个可以相互调用的短脚本。这与变量的结合将使脚本更好地为其他开发人员维护和阅读。
但是我不知道如何在另一个中使用一个 npm 脚本的结果。我几乎不是 bash 专家,所以为什么我在这里寻求帮助(:
在这个例子中,我试图设置一个脚本,允许开发人员轻松启动一个 docker(虚拟)环境。
在 package.json 中:
...
"config": {
"docker": {
"container": "docker-test"
}
},
"scripts": {
"container_run": "docker run -d -p 80:80 $npm_package_config_docker_container"
"container_running": "docker inspect -f {{.State.Running}} $npm_package_config_docker_container || echo 'false'",
"container_stop": "docker stop $npm_package_config_docker_container && docker rm $npm_package_config_docker_container",
"start": "???"
}
所以这里我有一个变量,其中包含要运行的 docker 容器的名称:$npm_package_config_docker_container
.
当我这样做npm run container_running
时,如果容器正在运行,这将返回 true,或者如果容器不存在则抛出错误,在这种情况下它将返回echo 'false'
。到目前为止,一切都很好。
现在我希望启动脚本检查容器是否正在运行,如果是,则停止容器并开始新的运行并且它没有运行只是开始新的运行。所以是这样的:
"start": "if [ container_running == "true" ]; then container_stop && container_run; else container_run; fi"
那么问题是如何实现这一目标?作为一个额外的问题,这可以在 Mac 和 Windows 环境中以兼容的方式完成吗?
任何帮助将非常感激!!