Ответ 1
Развернуть позволяет указать, хотите ли вы полностью создать путь назначения (например: /path/missing1/missing2
) или создать только последний каталог, когда существует его родительский элемент (/path/existing/missing
).
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++; } }); });
Развернуть позволяет указать, хотите ли вы полностью создать путь назначения (например: /path/missing1/missing2
) или создать только последний каталог, когда существует его родительский элемент (/path/existing/missing
).
Так как expand
является частью Grunt и не специфичен для grunt-contrib-copy, информацию об этом можно найти в API конфигурации файла Grunt:
Установите
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
.