3

次のようなgrunt-contrib-coffee構成を持つGruntfile.coffeeがあります。

coffee:
  compile:
    files:
      'public/assets/application.js': [
          'multiple/files' #, ...
      ]
    options:
      bare: true

問題は、次のようなヘルパー メソッドの複数の実装が生成されることです。

    var __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };

これらの実装が既にコンパイルされていることを認識させるにはどうすればよいですか?

更新 1

その理由は明らかに、コンパイルされた JavaScript がコンパイルに連結されるためです。コンパイルする前にCoffeeScript を連結すると、回避できます。これが私が見逃しているgrunt-contrib-coffeeの設定オプションでない場合は、github に問題を提出します。

残っている問題は、複数のヘルパー実装を回避するために、コンパイルする前に CoffeeScript を連結する方法ですか?

更新 2

concatソース ファイルとタスクを手動で連結するという回避策があります。これには、CoffeeScript から JavaScript にコンパイルできる一時ファイルが必要です。私が作成した問題に記載されています。

将来的には、タスクはお互いにバッファとしてそれらのものを渡すことができるようになります (問題を参照してください)。

4

1 に答える 1

1

grunt-contrib-coffee-0.6.1 以降、これは次のjoinオプションで機能します。

coffee:
  compile:
    files:
      'public/assets/application.js': [
          'multiple/files' #, ...
      ]
    options:
      bare: true
      join: true # concatenate coffee files before compiling. default is false
于 2013-03-18T16:31:32.293 に答える