2011-12-23 9 views
5

私は--watchオプション付きのcoffeescriptを使用して、.coffeeファイルの変更時にjavascriptを再構築しています。Coffeescriptとノードスーパーバイザは一緒ですか?

ノードスーパーバイザと組み合わせて、コンパイルされたjavascriptへの変更をノードを再起動することは安全ですか?

私は、coffeescriptが複数のファイルを再コンパイルしているときに、原子性のために堅牢ではないと心配しています。ノードスーパーバイザが銃を飛ばして、最初のファイルシステムの変更を検出したらノードを再起動することができます。 Nodeを再起動している間に追加の変更があったことを認識するのに十分な堅牢性を備えていますか?

良い方法がありますか?理想的には、私はファイルシステムワッチャーを1つだけ作成して、私のcoffeescriptを再コンパイルし、ノードを再起動します。 nodemonのもう一つの良い機能は、ファイル、例を無視している

​​

+0

コーヒーファイルを再帰的に見ていますか?おそらく私はこの質問を私に手伝ってもらえます:http://stackoverflow.com/questions/15470334/autocompile-coffee-files-and-reload-project – opensas

答えて

6

あなたは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

+0

ありがとう、私は遅延機能を認識していませんでした。私はこれを使って遊びます。 – Nils

+0

デフォルトでは、nodemonは指定されたappファイルを除いて.coffeeファイルを無視することに注意してください。 .coffeeファイルをプリコンパイルしないと、問題が発生します。 プロジェクトルートに.nodemonignoreファイルを追加して解決しました。デフォルトのルールを書き換えて、必要な.coffeeファイルをすべて表示するように開始しました。 – Nayjest

+0

これはcoffeescriptで動作するように--debugの前に--nodejsを追加する必要がありました。 nodejs --debug ./server.coffee – cbaigorri

1

connect-assetsのような私のCakefilesの中には、何か変わるたびに自分自身を見て、単にcoffee -co lib srcを発動させて、その子プロセスが終了したときにサーバを再起動します。それは原子性の問題を回避します。すべての.coffeeファイルが一度に変更された場合(またはランタイムcoffeeをアップグレードした場合)、すべてのJSファイルが同時に更新されます。

+0

ニース!私はあなたのケーキファイルをまだ完全に理解していません。しかし、それは良いアイデアのように見えます。 – Nils

7

このように、JavaScriptのランチャー、すなわちrun.jsを作成します。

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

を次に監督し、適切なオプションを使用して、このファイルを実行します。

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

これは、Windows上で私のためによく働きました。

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ファイル:

+0

+1はOSX Lionでも動作します –

+0

別途jsファイルを作成する必要はありません。 '-x'オプションで実行可能ファイルを指定できます。 [私の答え](http://stackoverflow.com/a/18373394/93988)を参照してください。 –

0

マイ職長中心のソリューションは、次のようになります。私はこのアプローチが好きです。なぜなら、常に更新されるバニラのJSファイルを私の.icedファイルと一緒に保持しているからです。私は私の仕事を二重チェックすることができます(バニラではないかもしれないcoffeescriptで間違いがあります)。

+0

これは素晴らしいですが、私は '--debug'でnode-supervisorを実行することができません。 – wprater

4

supervisor-xのオプションをcoffeeに設定して使用できます。これは、右の実行ファイルにスクリプトを実行することを可能にします:

Lemming's answerに触発
supervisor -x coffee your-script.coffee 

関連する問題