Pat*_*ick 98 javascript gruntjs
module.exports = function(grunt) {
'use strict';
var path = require('path');
grunt.registerMultiTask('copy', 'Copy 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++;
}
});
});
Dav*_*son 82
由于expand是Grunt的一部分,并不是特定于grunt-contrib-copy,因此可以在Grunt的文件配置API中找到有关它的信息:
设置
expand为true启用以下选项:
cwd所有src匹配都与此路径相关(但不包括).src匹配的模式,相对于cwd.dest目标路径前缀.ext在生成的dest路径中使用此值替换任何现有扩展.extDot用于指示指示扩展名的句点所在的位置.可以采用'first'(扩展名在文件名中的第一个句点之后开始)或'last'(扩展名在最后一个句点之后开始),默认设置为'first'.flatten从生成的dest路径中删除所有路径部分.rename为每个匹配的src文件调用此函数(在扩展名重命名和展平后).在dest与匹配的src路径传递,而这个函数必须返回一个新dest值.如果dest多次返回相同的内容,src则使用它的每一个都将被添加到它的源数组中.
此外,dest如果设置expand为,似乎总是被视为目标目录true.
Vla*_*iev 58
Expand允许您指定是要完整创建目标路径(例如:) /path/missing1/missing2,还是仅在其父项存在时创建最后一个目录(/path/existing/missing).