我正在使用coffeescript和--watch选项在.coffee文件的更改上重建javascript。
将它与node-supervisor结合起来以便在对已编译的javascript的更改中重新启动Node是否安全?
我担心当coffeescript重新编译多个文件时,由于原子性,它不会很强大。 node-supervisor可以跳过枪并在检测到第一个文件系统更改时重新启动Node。它是否足够强大,以便在忙于重新启动Node时实现其他更改?
有更好的方法吗?理想情况下,我只有一个文件系统观察程序重新编译我的coffeescript并重新启动节点。
答案 0 :(得分:7)
创建一个JavaScript启动器,即run.js
,如下所示:
require('coffee-script');
require('./launch');
然后使用主管和适当的选项运行此文件:
supervisor -e "node|js|coffee" run.js
这在Windows上对我有用。
答案 1 :(得分:6)
你可以使用nodemon,它甚至有一个延迟功能(在经过几秒后重启服务器),例如:
nodemon --debug ./server.coffee 80
nodemon的另一个好处是忽略文件,例如:
# this is my ignore file with a nice comment at the top
/vendor/* # ignore all external submodules
/public/* # static files
./README.md # a specific file
*.css # ignore any CSS files too
除此之外,请阅读github repo上的文档并观看有关nodemon的此Nodetuts视频:http://nodetuts.com/tutorials/14-some-nodejs-tools.html
答案 2 :(得分:4)
您可以supervisor
使用-x
选项设置为coffee
。这将使它能够使用正确的可执行文件运行脚本:
supervisor -x coffee your-script.coffee
受Lemming's answer的启发。
答案 3 :(得分:1)
在我的一些CakeFiles中,例如connect-assets的那个,我会自己观察并在每次更改时简单地生成coffee -co lib src
,然后在子进程完成时重新启动服务器。这解决了原子性问题。如果每个.coffee
文件立即更改(或者如果升级coffee
运行时),则所有JS文件也会立即更新。
答案 4 :(得分:0)
我的工头中心解决方案如下:
Procfile.dev
web: ./node_modules/supervisor/lib/cli-wrapper.js -n exit server.js
watch: ./node_modules/iced-coffee-script/bin/coffee --watch --compile server.iced
然后只是foreman start -f Procfile.dev
然后gitignore
生成的.js
个文件。我喜欢这种方法,因为它保存了一个不断更新的vanilla JS文件和我的.iced
文件,所以我可以在我去的时候仔细检查我的工作(我肯定会在coffeescript中犯错,我可能不会在vanilla中)。