Що робить параметр "розгорнути" у копії grunt-contrib? Всі приклади використовують його, але документи нічого не говорять про те, що він робить


100
  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 = функція (grunt) {
  'використовувати суворо';

  var шлях = вимагати ('шлях');

  grunt.registerMultiTask ('копіювати', 'Копіювати файли.', function () {
    var kindOf = grunt.util.kindOf;

    var options = this.options ({
      contentContent: false,
      processContentExclude: []
    });

    var copyOptions = {
      процес: options.processContent,
      noProcess: options.processContentExclude
    };

    grunt.verbose.writeflags (параметри, "Параметри");

    var dest;
    var isExpandedPair;
    var tally = {
      dirs: 0,
      файли: 0
    };

    this.files.forEach (функція (filePair) {
      isExpandedPair = filePair.orig.expand || помилковий;

      filePair.src.forEach (функція (src) {
        if (detectDestType (filePair.dest) === 'каталог') {
          dest = (isExpandedPair)? filePair.dest: unixifyPath (path.join (filePair.dest, src));
        } else {
          dest = filePair.dest;
        }

        якщо (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 ++;
        }
      });
    });

Чи знаєте ви, що прийнята відповідь невірна? Дивіться цю відповідь нижче .
David Pärsson

Відповіді:


59

Розгортання дає змогу вказати, чи хочете ви створити цільовий шлях у повному обсязі (наприклад:) /path/missing1/missing2, або створити останню директорію лише тоді, коли існує її батьківський ( /path/existing/missing).


4
Так, це фактично опція -p mkdir. Зрозумів дякую!
Патрік

6
Ця відповідь не правильна. Це в кращому випадку спрощено.
David Pärsson

3
-1. Це вводить в оману - виходячи з цієї відповіді, яку я видалив expand: true, вважаючи, що вона мені не потрібна, і тоді моя збірка перестала працювати.
Клавдіу

82

Оскільки 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.


Краща відповідь. Але хіба це ніде не зафіксовано?
синоніп

Я насправді знайшов документацію, подивившись вдруге, і відповідно оновив свою відповідь.
David Pärsson

Я додав корисний приклад, наведений у документі. Зараз це зрозуміліше.
Rémi Becheras
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.