- 这里是README和示例: 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) { 'use strict';
var path = require('path');
grunt.registerMultiTask('copy', '复制文件。', 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, '选项');
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('正在创建目录:' + dest.cyan); grunt.file.mkdir(dest); tally.dirs++; } else { grunt.verbose.writeln('正在复制文件:' + src.cyan + ' -> ' + dest.cyan); grunt.file.copy(src, dest, copyOptions); tally.files++; } }); });