100
  1. README と例は次のとおりです: https://github.com/gruntjs/grunt-contrib-copy/blob/master/README.md
  2. https://github.com/gruntjs/grunt-contrib-copy/blob/master/tasks/copy.jsからのコードの関連部分 (明らかに理解できない) は次のとおりです。
module.exports = function(grunt) {
  '厳密を使用';

  var path = require('パス');

  grunt.registerMultiTask('copy', 'ファイルのコピー', function() {
    var kindOf = grunt.util.kindOf;

    var オプション = this.options({
      プロセスコンテンツ: false,
      processContentExclude: []
    });

    var copyOptions = {
      プロセス: options.processContent,
      noProcess: options.processContentExclude
    };

    grunt.verbose.writeflags(オプション、「オプション」);

    var dest;
    var isExpandedPair;
    変数集計 = {
      ディレクトリ: 0,
      ファイル: 0
    };

    this.files.forEach(関数(ファイルペア) {
      isExpandedPair = filePair.orig.expand || 間違い;

      filePair.src.forEach(関数(src) {
        if (detectDestType(filePair.dest) === 'ディレクトリ') {
          dest = (isExpandedPair) ? filePair.dest : unixifyPath(path.join(filePair.dest, src));
        } そうしないと {
          dest = filePair.dest;
        }

        if (grunt.file.isDir(src)) {
          grunt.verbose.writeln('Creating' + dest.cyan);
          grunt.file.mkdir(宛先);
          タリー.dirs++;
        } そうしないと {
          grunt.verbose.writeln('コピー中' + src.cyan + ' -> ' + dest.cyan);
          grunt.file.copy(src, dest, copyOptions);
          タリー.ファイル++;
        }
      });
    });
4

2 に答える 2

84

は Grunt の一部であり、grunt-contrib-copy に固有のものではないため、それに関する情報はGrunt のファイル構成 APIexpandで見つけることができます。

次のオプションを有効にするには、 に設定expandします。true

  • cwdすべてのsrc一致は、このパスに関連しています (ただし、パスは含まれません)。
  • srcに関連する、一致するパターンcwd
  • dest宛先パスのプレフィックス。
  • extdest生成されたパス内の既存の拡張子をこの値に置き換えます。
  • extDot拡張子を示すピリオドがどこにあるかを示すために使用されます。'first'(拡張子はファイル名の最初のピリオドの後に'last'始まる) または (拡張子は最後のピリオドの後に始まる) のいずれかを取ることができ、デフォルトでは に設定されています'first'
  • flatten生成されたパスからすべてのパス部分を削除しdestます。
  • renameこの関数は、一致したファイルごとに呼び出されsrcます (拡張子の名前変更とフラット化の後)。dest一致したパスsrcが渡され、この関数は新しいdest値を返す必要があります。同じdestものが複数回返された場合、srcそれを使用したそれぞれがそのソースの配列に追加されます。

さらに、に設定するdestと、常に宛先ディレクトリと見なされるようです。expandtrue

于 2015-03-06T14:02:59.003 に答える
60

/path/missing1/missing2展開先のパスを完全に作成するか (例: )、親が存在する最後のディレクトリのみを作成するか ( )を指定できます/path/existing/missing

于 2013-06-07T06:54:33.423 に答える