10

1つのファイルに結合する必要のある.coffeeファイルがたくさんあります。

Railsアプリのようにフォルダーを設定しています:

/src/controller/log_controller.coffee
/src/model/log.coffee
/src/views/logs/new.coffee

Coffeescriptには、複数のCoffeescriptを1つのファイルに結合できるコマンドがありますが、1つのディレクトリでしか機能しないようです。たとえば、これは正常に機能します。

coffee --output app/controllers.js --join --compile src/controllers/*.coffee

しかし、私はこの機能しないコマンドのようなサブディレクトリの束を含めることができる必要があります:

coffee --output app/all.js --join --compile src/*/*.coffee

これを行う方法はありますか?サブディレクトリ内のすべてのファイルのリストを渡すUNIXyの方法はありますか?

OSXでターミナルを使用しています。

これらはすべて1つのファイルに結合する必要があります。そうしないと、個々のファイルがコンパイルされてラップされるためです。

(function() { }).call(this);

これは、一部の関数呼び出しの範囲を壊します。

4

7 に答える 7

28

CoffeeScriptのドキュメントから:

-j、--join [FILE]:コンパイルする前に、すべてのスクリプトを渡された順序で連結し、指定されたファイルに書き込みます。大規模なプロジェクトの構築に役立ちます。

したがって、次のようにコマンドライン(私はbashを使用)で目標を達成できます。

coffee -cj path/to/compiled/file.js file1 file2 file3 file4

ここで、file1-fileNは、コンパイルするCoffeescriptファイルへのパスです。

于 2011-11-08T07:01:37.380 に答える
6

シェルスクリプトまたはRakeタスクを記述して、最初にそれらを組み合わせてからコンパイルすることができます。何かのようなもの:

find . -type f -name '*.coffee' -print0 | xargs -0 cat > output.coffee

次にコンパイルしますoutput.coffee

ニーズに合わせてパスを調整します。また、output.coffeeファイルが検索対象のパスと同じでないことを確認してください。そうしないfindと、無限ループに陥ります。

http://man.cx/find | http://www.rubyrake.org/tutorial/index.html

さらに、ディレクトリ全体の検索に関するStackoverflowに関するこれらの他の投稿に興味があるかもしれません。

于 2011-01-02T14:56:40.937 に答える
3

CoffeeToasterのアルファ版をリリースしたばかりです。お役に立てばと思います。 http://github.com/serpentem/coffee-toaster

于 2011-09-11T20:17:49.997 に答える
2

コーヒーコマンドラインツールを使用する最も簡単な方法。

Coffee --output public --join --compile app

appは複数のサブディレクトリを保持する私の作業ディレクトリであり、publicは〜output.jsファイルが配置される場所です。nodejsでアプリを作成する場合、このプロセスを簡単に自動化できます

于 2012-11-08T21:56:21.647 に答える
2

これは私を助けました(-o出力ディレクトリ、-jproject.jsに参加し、-cwcoffeescriptディレクトリを完全にコンパイルして監視します):

coffee -o web/js -j project.js -cw coffeescript
于 2013-05-21T06:34:39.123 に答える
1

ケーキを使用して、それらすべてを1つ(または複数)の結果の.jsファイルにコンパイルします。Cakefileは、コーヒースクリプトをコンパイルする順序を制御する構成として使用されます。これは、大規模なプロジェクトで非常に便利です。

Cakeはインストールとセットアップが非常に簡単で、プロジェクトの編集中にvimからCakeを呼び出すだけです。

:!cake build

ブラウザを更新して結果を確認できます。

また、ファイルを構造化する最良の方法を学び、バックボーンとケーキと組み合わせてcoffeescriptを使用するのに忙しいので、自分の参照として保持するためにgithubに小さなプロジェクトを作成しました。そしていくつかの基本的なこと。コンパイルされたすべてのファイルはwwwフォルダーにあるため、ブラウザーで開くことができ、すべてのソースファイル(ケーキ構成を除く)はsrcフォルダーにあります。この例では、すべての.coffeeファイルがコンパイルされ、1つの出力.jsファイルに結合されて、htmlに含まれます。

于 2012-07-14T02:59:50.017 に答える
0

または、--bareフラグを使用してJavaScriptにコンパイルし、必要に応じてJSをラップすることもできます。しかし、これはおそらく問題を引き起こすでしょう。たとえば、コードを含むファイルが1つある場合

i = 0
foo = -> i++
...
foo()

var iその場合、結果のJavaScriptには宣言が1つだけあり、iインクリメントされます。ただし、foo関数宣言を別のCoffeeScriptファイルに移動した場合、そのファイルifooスコープ内に存在し、外部iは影響を受けません。

したがって、CoffeeScriptを連結することはより賢明な解決策ですが、それでも混乱する可能性があります。コードを連結する順序は、ほぼ確実に重要になります。代わりに、コードをモジュール化することを強くお勧めします。

于 2011-02-03T19:45:27.130 に答える