Rails は、このような問題をアセット パイプラインで解決します。CoffeeScript -> JavaScript 変換を調整でき、ソース ファイル (またはディレクトリ ツリー) を簡単に含めて、それらを連結および縮小できます。
Sprockets はチェーン フィルターをサポートしています。たとえば、foo.js.coffee
JavaScript を生成する CoffeeScript として扱われます。これは、それ自体に他の依存関係が含まれている可能性があり、縮小の候補です。条件付きコンパイルのための外部変数の取り込み、データベースからのオブジェクトのインライン化、およびその他の風変わりな動作は、他のフィルターでチェーン化することで簡単に対応できますfoo.js.coffee.erb
。
<% if environment == 'production' %>
log = (args...) ->
# no-op
<% else %>
log = (args...) ->
console.log(args...)
<% end %>
これらはすべて、通常、開発中はオンザフライで実行され、本番環境ではコンパイル ステップで実行されます。ここで、個々のソース ファイルが処理され、結合され、最適化されてから Web サーバーに配信されます。これはすべて、CSS プリプロセッサと JavaScript テンプレート言語でも機能します。誰かがコンパイルしたい Web 関連のものがある場合、どこかでそれがサポートされている可能性があります。
Rails を使用していない可能性がありますが、このすべての作業を活用することをやめるべきではありません。アセット パイプラインは、実際にはSprocketsと呼ばれるスタンドアロンの gemです。既存のビルド プロセスの代わりにボルトで固定できる可能性があります。これは C++ プリプロセッサではありませんが、この問題を解決するために他の多くの人が行っていることです。