grunt-contrib-copy中有什么“扩展”选项? 这些例子都使用它,但文档没有说明它的function
- 这里是自述文件和示例: https : //github.com/gruntjs/grunt-contrib-copy/blob/master/README.md 。
- 这里是从https://github.com/gruntjs/grunt-contrib-copy/blob/master/tasks/copy.js代码的相关部分(我显然不明白):
module.exports = function(grunt){ “严格使用”; var path = require('path'); grunt.registerMultiTask('copy','Copy 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 || 假; filePair.src.forEach(function(src){ if(detectDestType(filePair.dest)==='directory'){ dest =(isExpandedPair)? filePair.dest:unixifyPath(path.join(filePair.dest,src)); } else { dest = filePair.dest; } 如果(grunt.file.isDir(src)){ grunt.verbose.writeln('Creating'+ dest.cyan); grunt.file.mkdir(目标); tally.dirs ++; } else { grunt.verbose.writeln('Copying'+ src.cyan +' - >'+ dest.cyan); grunt.file.copy(src,dest,copyOptions); tally.files ++; } }); });
展开允许您指定是否要完整地创build目标path(例如: /path/missing1/missing2
),或者仅在其父目录( /path/existing/missing
)存在时创build最后一个目录。
由于expand
是Grunt的一部分,而不是grunt-contrib-copy的特定信息,所以可以在Grunt的文件configurationAPI中find它的信息:
将
expand
设置为true
以启用以下选项:
cwd
所有的src
匹配都是相对于(但不包括)这个path。src
模式匹配,相对于cwd
。- 目的地path前缀。
ext
用生成的dest
path中的此值replace任何现有的扩展。extDot
用于指示指示分机的时间段位于何处。 可以采用'first'
(扩展名在文件名的第一个句点之后开始)或'last'
(扩展名在上一个句点之后开始),默认设置为'first'
。flatten
从生成的dest
path中移除所有path部分。rename
为每个匹配的src
文件调用此函数(在扩展名重命名和展平之后)。dest
和匹配的src
path被传入,并且这个函数必须返回一个新的dest
值。 如果同一个dest
不止一次返回,那么每个使用它的src
都会被添加到一个源数组中。
另外,如果设置expand
为true
dest
好像总是被认为是目标目录。