1. ホーム
  2. javascript

[解決済み] Grunt.js copyでディレクトリから別のディレクトリに全ファイルをコピーする

2023-02-07 01:09:45

質問

ビルド プロセスの一環として、あるディレクトリ内のすべてのファイルを別のディレクトリにコピーしようとしています。明示的に指定した個々のファイルについてはうまくいくのですが、ディレクトリ全体をコピーしようとすると、ディレクトリ構造全体をコピーする(またはまったく何もコピーしない)など、奇妙なことが起こります。以下は、私の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/" }

どのように解決するのですか?

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

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
  }
}