Coffeescript和节点主管在一起?

时间:2011-12-23 17:55:22

标签: node.js coffeescript

我正在使用coffeescript和--watch选项在.coffee文件的更改上重建javascript。

将它与node-supervisor结合起来以便在对已编译的javascript的更改中重新启动Node是否安全?

我担心当coffeescript重新编译多个文件时,由于原子性,它不会很强大。 node-supervisor可以跳过枪并在检测到第一个文件系统更改时重新启动Node。它是否足够强大,以便在忙于重新启动Node时实现其他更改?

有更好的方法吗?理想情况下,我只有一个文件系统观察程序重新编译我的coffeescript并重新启动节点。

5 个答案:

答案 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中)。