「拡張」オプションはgrunt-contrib-copyで何をしますか?例はすべてそれを使用していますが、ドキュメントはそれが何をするかについて何も言っていません


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( 'path');

  grunt.registerMultiTask( 'copy'、 'C​​opy files。'、function(){
    var kindOf = grunt.util.kindOf;

    var options = this.options({
      processContent:false、
      processContentExclude:[]
    });

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

    grunt.verbose.writeflags(options、 'Options');

    var dest;
    var isExpandedPair;
    var tally = {
      dirs:0、
      ファイル:0
    };

    this.files.forEach(function(filePair){
      isExpandedPair = filePair.orig.expand || false;

      filePair.src.forEach(function(src){
        if(detectDestType(filePair.dest)=== 'directory'){
          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(dest);
          tally.dirs ++;
        } そうしないと {
          grunt.verbose.writeln( 'Copying' + src.cyan + '->' + dest.cyan);
          grunt.file.copy(src、dest、copyOptions);
          tally.files ++;
        }
      });
    });

受け入れられた答えが正しくないことを知っていますか?以下のこの回答を参照してください。
DavidPärsson19年

回答:


59

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


4
ああ、それは事実上mkdirの-pオプションです。了解、ありがとう!
Patrick

6
この答えは正しくありません。せいぜい単純化されています。
DavidPärsson、2015年

3
-1。これは誤解を招く可能expand: true性があります。この回答に基づいて、私が削除した答えに基づいて、私がそれを必要としていないと考え、ビルドが機能しなくなりました。
Claudiu

82

以来expandうなり声の一部、およびイサキ-contribのコピーに対して特異的ではないですが、それについての情報はで見つけることができ兵卒のファイル構成のAPI

に設定expandtrueて、次のオプションを有効にします。

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

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


より良い答え。しかし、これはどこにも文書化されていませんか?
syonip 2015年

もう一度調べたところ、実際にドキュメントを見つけ、それに応じて回答を更新しました。
DavidPärsson、2015年

ドキュメントで提供されている便利な例を追加しました。より明確になりました。
レミBecheras
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.