4

何か不足しているかどうかはわかりませんが、grunt-contrib-copy タスク用に次の grunt セットアップがあります。

copy: {
  build: {
    files: {
      "server-dist/": "server/**/*.!(coffee)",
      "client-dist/": "client/**/*.!(coffee)"
    }
  }
}

client-dist はファイル ツリーを再帰的に実行すると予想どおりにコピーされますが、server-dist のすべてのサブフォルダーはベース フォルダーにフラット化されます。なぜこれが起こっているのですか?ここにI / Oがあります

server/
  views/
    errors/
      404.jade
    layouts/
      base.jade

になる

server/
  errors/
  layouts/
    base.jade

ビューフォルダーが完全に吹き飛ばされます。もう1つ... !(coffee) を削除すると動作しますが、grunt-coffee watch タスクを実行しているため、コーヒーファイルを除外する必要があります。

4

2 に答える 2

2

どうやらgrunt-contrib-copyタスクには、ソース ファイルをコピーするためのベース ディレクトリを自動的に検出しようとする洗練されたロジックが含まれているようです (関連する問題を参照してください) 。

basePath解決策は、オプションを明示的に指定することです。

copy: {
  build: {
    files: {
      "server-dist/": "server/**/*!(.coffee)"
    },
    options: {
      basePath: 'server' // base directory in the source path
    }
  }
}

PSただし、削除!(.coffee)すると動作が変わる理由はわかりません。ローカル マシンで同じことを試しましたが、"server/**/*"代わりに指定すると同じ結果が得られました"server/**/*.!(coffee)"(つまり、viewsフォルダーはスキップされます) 。

于 2012-11-16T11:55:30.920 に答える