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

  1. Вот README и примеры: https://github.com/gruntjs/grunt-contrib-copy/blob/master/README.md.
  2. Вот соответствующая часть кода (которую я, по-видимому, не могу понять) по 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 = {
      process: 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 || 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++;
        }
      });
    });

2 ответа

Решение

Развернуть позволяет указать, хотите ли вы создать путь назначения в полном объеме (например: /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,

Другие вопросы по тегам