私は、コーヒースクリプトをJSに自動的に再コンパイルするための最も簡単な方法を探しています。
読んで ドキュメント それでも私が欲しいものを正確に得るのに問題があります。
フォルダを監視するために必要ですsrc/
任意の*.coffee
ファイルの変更を行い、それらを連結されたjavascriptファイルにコンパイルしてlib/something.js
。
どういうわけか、一緒に見ること、コンパイルすること、そして連結することを組み合わせることができません。 :/
Coffee Scriptのドキュメントには、この例が記載されています。
ファイルの変更を監視し、ファイルが保存されるたびに再コンパイルします。
coffee --watch --compile experimental.coffee
実行したい特定のスクリプトがある場合は、linuxコマンドdnotifyを使用できます。 http://linux.die.net/man/1/dnotify
dnotify --all src/ --execute=command
編集:-dnotifyのexecute部分-がバグである可能性があるという問題がありましたが、これが私が機能したものです:
dnotify --all . -e `coffee -o lib/ --join --compile *.coffee`
これにより、ファイルが変更されるたびにコンパイルコマンドが実行されました。
次のように、コマンドにアンパサンドを追加した場合:
dnotify --all . -e `coffee -o lib/ --join --compile *.coffee` &
別のプロセスで開始されます。プロセスIDを取得するには、次を使用できます。
ps ux | awk '/dnotify/ && !/awk/ {print $2}'
そして、次のようなものを使用してプロセスを強制終了できます。
kill `ps ux | awk '/dnotify/ && !/awk/ {print $2}'`
しかし、それが(プロセス名で強制終了する)目的である場合は、次のコマンドを使用して、より簡単な方法で実行できます。
killall dnotify
ジッタを試してください
https://github.com/TrevorBurnham/jitter
.coffeeファイルのディレクトリを監視し、ファイルが変更されたことを検出すると、自動的に.jsに再コンパイルします。
ジッター/ path/to/coffee/dir/path/to/js/dir
私はcoffescriptとsenchatouchを使ったプロジェクトでそれを試してきました、それはかなりうまくいくようです。連結の問題は処理しませんが、自動コンパイルが必要な人にとっては非常に簡単に使用できます。
これは私を助けました(-o
出力ディレクトリ、 -j
project.jsに参加、-cw
coffeescriptディレクトリを完全にコンパイルして監視します):
coffee -o web/js -j project.js -cw coffeescript
coffee --watch
には2つの大きな欠陥があります。
git commit
する前にコンパイルするのを忘れるよりも素晴らしいとは思えません。私が思いついた解決策は、coffee --watch
をさらに数ステップ実行する、かなり単純なBashスクリプトです。これにより、システムログイン以降、作業ディレクトリツリーを監視し、ファイルの保存/変更ごとにJavaScriptに自動的にコンパイルできます。または新しいファイルの作成:
http://blog.gantrithor.com/post/11609373640/carefree-coffeescript-auto-compiler
これを行うためのよりエレガントな方法があるかもしれませんが、この実装はうまく機能します=)
/ srcの1レベル上にあるため、これは、深さに関係なく検出されたすべての.coffeeファイルに対して機能します。
coffee -w -c src/
find -type f | grep .coffee | xargs ls -t | head -n 1 | xargs coffee -cw
最後に変更されたコーヒースクリプトを見つけて、コンパイルウォッチモードにします
コマンドラインのcoffeescriptコンパイラは、複雑なプロジェクト構造にはあまり適していないことがわかりました。
あなたとあなたのビルドプロセスが私と同じくらい困っているなら、Grunthttp://gruntjs.com/ をチェックしてください。
これにより、非常に複雑なビルドプロセスが可能になります。
タスクをつなぎ合わせることができ、監視対象のファイル/フォルダーも高度にカスタマイズできます。
find `pwd` | grep .coffee | xargs coffee -w -c
アプリケーションのルートディレクトリでこれを試してください
あなたの質問に対する簡単な答えは、coffee
ユーティリティはこのために設計されていないということです。ファイル監視と連結の組み合わせは、実際にはかなり複雑です。近い将来、CoffeeScript用のより洗練されたビルドツールを期待してください。それまでは、CakefileまたはRuby Watchrスクリプトを記述して、プロジェクトのビルドを実行することをお勧めします。その後、ミニファイ、ドキュメント生成、および特定のプロジェクトに必要なその他のものを投入することもできます。 (特定の連結順序を保証することは言うまでもありません)。
連結についての考えが変わりました。
以下を含む小さなcompiler.shファイルを作成しました:
dnotify -M src/ -e coffee -o lib/ -c src/ &
dnotify -M spec/ -e coffee -o lib/ -c spec/ &
種類は私のニーズに合っています。
nodemon -x coffee server.coffee
は私のためにそれをします。
npm install -g nodemon
を使用してnodemon
をインストールします