以前在我的本地计算机上,我一直在使用nodemon
来监视对Node应用程序所做的更改,并在每次更改时重新加载它。但是在我自己的机器上运行开发服务器已不再可行,所以我在指定的开发服务器上为应用程序设置了git。
事先我更喜欢Sublime Text,所以通过终端在开发服务器上编辑文件并不符合我的工作流程,而且我喜欢默认情况下在本地计算机上拥有所有内容的副本。我还检查了rsync
,但我喜欢git提供的细粒度版本控件。
那么如何在本地编辑文件,git push
将它们编辑到开发服务器,并在每次推送后自动重新加载Node应用程序?
答案 0 :(得分:6)
您可以编写服务器端挂钩。在.git目录中有一个钩子目录。只需cd到.git / hooks。在那里,您可以用您需要的任何语言编写脚本。基本上在您推送它之后将运行您告诉它的脚本。这里有关于git hooks的更多信息
https://git-scm.com/book/es/v2/Customizing-Git-Git-Hooks
使这项工作的快速教程:
在开发服务器上,导航至/home/dev-user/Node
并使用/home/dev-user/Node/example.git
在git init --bare example.git
初始化裸存储库。
使用/home/dev-user/Node/example
将存储库克隆到git clone example.git
。
根据需要将文件添加到/home/dev-user/Node/example
,然后git add .
和git commit -m "init"
以及最后git push origin master
将文件推送到example.git
。
修改或创建/home/dev-user/Node/example.git/hooks/post-receive
并添加以下行:
GIT_WORK_TREE=/home/dev-user/Node/example/ git checkout -f
当任何更改推送到/home/dev-user/Node/example/
时,这会自动更新/home/dev-user/Node/example.git
中的文件。
如果您尚未安装nodemon
,请使用npm install -g nodemon
进行安装。您可能必须使用sudo
。
假设您的主节点应用位于/home/dev-user/Node/example/app.js
,请使用nodemon /home/dev-user/Node/example/app.js
启动应用(或者如果您已经在/home/dev-user/Node/example
内,只需nodemon app.js
疗程)。
在本地计算机上,导航到/home/timbur/Node
,并假设您可以通过SSH自动连接到服务器,使用git clone dev-user@dev.server.ip.address:Node/example.git
克隆裸存储库。现在,您将拥有/home/timbur/Node/example
。
编辑本地计算机上的文件,并像往常一样将/ commit / push文件添加到开发服务器,更改将自动更新服务器的example
目录,nodemon
将检测到该目录,应用程序将重新启动。
答案 1 :(得分:0)
最好的方法是设置一个持续集成服务器,如Jenkins:https://jenkins-ci.org/
然后有基本上无论你想做什么的插件,例如node.js的插件:https://wiki.jenkins-ci.org/display/JENKINS/NodeJS+Plugin
但这可能不是最简单的方法。您还可以在服务器上设置一个post-receive挂钩,每当您推送任何更改时都会检查代码,然后让它重新启动您的服务器。这是我发现的一个要点(但从未尝试过)https://gist.github.com/tlrobinson/8035884