2011-12-23 37 views
5

我正在使用带有--watch选项的coffeescript来对.coffee文件的更改重建javascript。Coffeescript和node-supervisor在一起吗?

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

我很担心,因为coffeescript正在重新编译多个文件,因为原子性,它不会健壮。节点监督员可以跳过枪并重新启动节点,检测第一个文件系统更改。它是否足够强大,足以认识到在重新启动节点时还有其他更改?

有没有更好的方法?理想情况下,我只有一个文件系统观察器重新编译我的咖啡脚本并重新启动节点。

+0

如何递归观看咖啡文件?也许你可以给我这个问题:http://stackoverflow.com/questions/15470334/autocompile-coffee-files-and-reload-project – opensas 2013-03-18 05:51:33

回答

6

您可以使用nodemon,它甚至有一个延迟功能(重新启动服务器的秒数过去了之后),例如:

​​

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文档和观看这Nodetuts约nodemon视频:http://nodetuts.com/tutorials/14-some-nodejs-tools.html

+0

谢谢,我不知道延迟功能。我会玩这个。 – Nils 2011-12-24 00:43:15

+0

请注意,默认情况下,nodemon会忽略.coffee文件exceptiong指定的应用程序文件。 因此,如果您不预编译您的.coffee文件,您将遇到问题。 我通过将.nodemonignore文件添加到项目根目录解决了它,它重写了默认规则,并且nodemon开始观察所有必需的.coffee文件 – Nayjest 2013-01-04 14:16:14

+0

我必须在--debug之前预先安装--nodejs以使其与coffeescript配合使用:nodemon - nodejs --debug ./server.coffee – cbaigorri 2014-03-26 15:59:38

1

在我的一些Cakefiles中,例如connect-assets的Cakefiles中,我自己做了一些观察,并且每次改变时都会产生coffee -co lib src,然后在该子进程结束时重新启动服务器。这解决了原子性问题。如果每个.coffee文件一次更改(或者如果您升级coffee运行时),则所有JS文件也会同时更新。

+0

不错!我甚至不完全了解你的cakefile。但是这看起来是个好主意。 – Nils 2011-12-24 00:37:04

7

创建JavaScript代码发射器,即run.js,像这样:

require('coffee-script'); 
require('./launch'); 

然后运行该文件,主管和适当的选项:

supervisor -e "node|js|coffee" run.js 

这个工作很适合我在Windows上。

+0

+1也适用于OSX Lion – 2012-10-10 17:21:10

+0

无需创建单独的js文件。您可以使用'-x'选项指定可执行文件。看[我的回答](http://stackoverflow.com/a/18373394/93988)。 – 2013-08-22 06:42:51

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中犯错,我可能不会在香草中)。

+0

这很好,但我似乎无法运行'--debug'节点监控器 – wprater 2013-09-25 19:58:02

4

您可以使用supervisor并将-x选项设置为coffee。这将使它能够与正确的可执行文件运行脚本:

supervisor -x coffee your-script.coffee 

灵感来自Lemming's answer