0

複数のプロジェクトがビルド スクリプトの「フェーズ」を共有できるように、アセットを構築しようとしています。たとえば、すべて Bootstrap と jQuery を使用する 3 つの Web ベースの製品がある場合、ライブラリは共有の「ライブラリ」からのみ入手したいと考えています。

フォルダは、次のような構造にすることを提案しています。

shared
  -sharedGrunt.js (file)
  -lib (folder)
    -bootstrap (folder)
    -jQuery.js (file)
app1
  -Gruntfile.js (file)
  -src (folder)
    -images (folder)
    -js (folder)
    -etc
app2
  -Gruntfile.js (file)
  -src (folder)
    -images (folder)
    -js (folder)
    -etc

各「アプリ」フォルダーの Gruntfile.js を「インポート」または実行できるようにしたいsharedGrunt.js。私はまだその橋を渡っていません。なぜなら、最初の概念実証テストである単純なコピーで立ち往生しているからです。

そのため、アプリのGruntfile.jsファイルの 1 つに、次のようなコピー タスクがあります。

copy: {
  externalTest: {
    expand: true,
    src: '../shared/lib/jQuery.js',
    dest: 'dev/js/jQuery.js',
    flatten: true
  }
}

ご覧のとおり、Gruntfile から 1 レベル上に移動しようとしています。「shared」、「app1」、「app2」を含むディレクトリです。次に、jQuery を取得するために、共有 lib フォルダーに戻ります。

タスクは「成功」しましたが (実際のエラーはスローされません)、ファイルはコピーされません。

どうすれば目標を達成できますか? すべてのプロジェクトを含む「親」フォルダーに「キャッチオール」gruntFile を配置する必要がありますか? 開発者が親全体をチェックアウトすることを要求したくありません。開発者が「app1」と「shared」をチェックアウトして実行できるようにしてほしい。

4

2 に答える 2

1

奇妙なことに、Grunt はレベルを上げても問題ありません。私のマシンでは、コードは実際に 1 つのファイルをコピーします。

ただし、expand grunt を使用するとプロパティdestがディレクトリとして使用されるため、ファイルはdev/js/jQuery.js/jQuery.js(繰り返しに注意してください) になります。

次のようにして修正しました。

copy: {
  externalTest: {
    expand: true,
    src: '../shared/lib/*.js',
    dest: 'dev/js',
    flatten: true
  }
}
于 2015-07-18T15:10:14.033 に答える