web-dev-qa-db-ja.com

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

  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){
 'use strict'; 
 
 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 = {
 process :options.processContent、
 noProcess:options.processContentExclude 
}; 
 
 grunt.verbose.writeflags(options、 'Options'); 
 
 var dest; 
 var isExpandedPair; 
 var tally = {
 dirs:0、
 files: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)); 
} else {
 dest = filePair.dest; 
} 
 
 if(grunt.file.isDir(src)){
 grunt.verbose.writeln( 'Creating' + dest.cyan); 
 grunt.file.mkdir(dest); 
 tally.dirs ++; 
} else {
 grunt.verbose.writeln( 'Copying' + src.cyan + '->' + dest.cyan); 
 grunt.file.copy(src、dest、copyOptions); 
 tally.files ++; 
} 
}); 
}); 
97
Patrick

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

56

expandはGruntの一部であり、grunt-contrib-copyに固有ではないため、それに関する情報は Gruntのファイル構成API にあります。

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

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

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

79
David Pärsson