Что делает опция "expand" в grunt-contrib-copy? Все примеры используют его, но документы ничего не говорят о том, что он делает

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++;
        }
      });
    });

Ответ 1

Развернуть позволяет указать, хотите ли вы полностью создать путь назначения (например: /path/missing1/missing2) или создать только последний каталог, когда существует его родительский элемент (/path/existing/missing).

Ответ 2

Так как 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.