94

ビルド プロセスの一環として、ディレクトリ内のすべてのファイルを別のディレクトリにコピーしようとしています。明示的に指定した個々のファイルに対しては正常に機能しますが、ディレクトリ全体をコピーしようとすると、ディレクトリ構造全体をコピーする (または何もコピーしない) などの奇妙なことが起こります。これが私の GruntFile.js の関連部分です。

copy: {
  myvoice: {
    files: [
      { src:"src/html/index.html", dest:"dist/myvoice/index.html" },
      { src:"src/html/css/style.css", dest:"dist/myvoice/css/style.css" },
      { src:"src/html/js/require.js", dest:"dist/myvoice/js/require.js" },
      { src:"build/myvoice/main.js", dest:"dist/myvoice/js/main.js" },
      { src:"src/html/css/fonts/*", dest:"dist/myvoice/css/fonts/" }
    ]
  }
},

具体的には、私が仕事に就けないのは最後の行です:

      { src:"src/html/css/fonts/*", dest:"dist/myvoice/css/fonts/" }
4

5 に答える 5

157

この回答flatten: trueのようなオプションは、場合によっては機能する可能性がありますが、(私の場合のように) より一般的な要件は、フォルダーとそのサブフォルダー構造をそのままコピーすることです。ほとんどの場合、サブフォルダーがある場合、それらはおそらくコードでそのように参照されているようです。これを行うための鍵は、指定された作業ディレクトリに相対的なフォルダー構造を保持するオプションです。destcwd

copy: {
  files: {
    cwd: 'path/to/files',  // set working folder / root to copy
    src: '**/*',           // copy all files and subfolders
    dest: 'dist/files',    // destination folder
    expand: true           // required when using cwd
  }
}
于 2014-05-15T05:45:04.053 に答える
43

ファイル グロブを指定すると、このタスクはフォルダー構造を維持します。必要なのはflatten、構造を削除するオプションです。

{
    expand: true,
    flatten: true,
    src: ['src/html/css/fonts/**'],
    dest: 'dist/myvoice/css/fonts/',
    filter: 'isFile'
}

Github repoで利用可能な残りのオプションを見つけてください。お役に立てれば。

于 2013-09-24T20:14:44.507 に答える
2

ファイルセグメント(Coffeescript内)に中括弧の代わりにegdyを使用する必要がありました...

copy: {
  files: [
    cwd: 'path/to/files'
    src: '**/*'
    dest: 'dist/files'
    expand: true
  ]
}
于 2015-07-29T17:44:13.480 に答える
0

angular yeoman で開発している場合、これは grunt でコピーするより良い方法です。expand: cwd を使用する場合は true が必要です。<%= yeoman.app %> は単なるアプリ ルート ('.') です。

 {
    expand: true,
     cwd: '<%= yeoman.app %>/data',
     dest: '<%= yeoman.dist %>/data',
     src: ['**']
    }
于 2016-07-21T17:22:13.377 に答える