コーヒースクリプトをJSに自動的に再コンパイルする最も簡単な方法を探しています。
ドキュメントを読んでいますが、必要なものを正確に取得するのにまだ問題があります。
src/
ファイルの変更がないかフォルダを監視*.coffee
し、それらを連結されたjavascriptファイルにコンパイルしてlib/something.js
.
どういうわけか、監視、コンパイル、および連結を組み合わせることができません。:/
コーヒースクリプトを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 と sencha touch を使用するプロジェクトで試してみましたが、かなりうまくいくようです。連結の問題は処理しませんが、自動コンパイルだけが必要な人にとっては非常に簡単に使用できます。
これは私を助けました(-o
ディレクトリを出力-j
し、project.jsに参加し、-cw
coffeescriptディレクトリを完全にコンパイルして監視します):
coffee -o web/js -j project.js -cw coffeescript
coffee --watch
2 つの大きな欠陥があります。
git commit
ん私が思いついた解決策はcoffee --watch
、システムにログインしてから作業ディレクトリツリーを監視し、ファイルの保存/変更または新しいファイルの作成ごとに自動的にJavaScriptにコンパイルできるようにする、さらにいくつかの手順を実行するかなり単純なBashスクリプトです。
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 コンパイラは、複雑なプロジェクト構造にはあまり適していないことがわかりました。
あなたとあなたのビルド プロセスが私と同じくらい困っているなら、Gruntをチェックしてください- http://gruntjs.com/
これにより、非常に複雑なビルド プロセスが可能になります。
タスクはつなぎ合わせることができ、監視対象のファイル/フォルダーも高度にカスタマイズ可能です。
find `pwd` | grep .coffee | xargs coffee -w -c
アプリケーションのルートディレクトリでこれを試してください
あなたの質問に対する簡単な答えは、このcoffee
ユーティリティはこのように設計されていないということです。ファイル監視と連結の組み合わせは、実際にはかなり複雑です。近い将来、CoffeeScript 用のより洗練されたビルド ツールが登場することを期待してください。それまでは、Cakefile または Ruby Watchr スクリプトを作成して、プロジェクトのビルドを実行することをお勧めします。次に、縮小、ドキュメント生成、および特定のプロジェクトに必要なものを投入することもできます (特定の連結順序の保証は言うまでもありません)。
nodemon -x coffee server.coffee
私のためにそれをします。
nodemon
を使用してインストールnpm install -g nodemon
連結について考えが変わりました。
以下を含む小さな compiler.sh ファイルを作成しました。
dnotify -M src/ -e coffee -o lib/ -c src/ &
dnotify -M spec/ -e coffee -o lib/ -c spec/ &
私のニーズにぴったりです。