web-dev-qa-db-fra.com

Que fait l'option "expand" dans grunt-contrib-copy? Les exemples l'utilisent tous mais les documents ne disent rien de ce qu'il fait

  1. Voici le README et exemples: https://github.com/gruntjs/grunt-contrib-copy/blob/master/README.md .
  2. Voici la partie pertinente du code (que je ne comprends apparemment pas) de https://github.com/gruntjs/grunt-contrib-copy/blob/master/tasks/copy.js :
 module.exports = fonction (grognement) {
 'use strict'; 
 
 var path = require ('path'); 
 
 grunt.registerMultiTask ('copier', 'Copier les fichiers.', fonction () {
 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, 
 fichiers: 0 
}; 
 
 this.files.forEach (fonction (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 ('Création' + dest.cyan); 
 grunt.file.mkdir (dest); 
 tally.dirs ++; 
} else {
 grunt.verbose.writeln ('Copie' + src.cyan + '->' + dest.cyan); 
 grunt.file.copy (src, dest, copyOptions); 
 tally.files ++; 
} 
}); 
}); 
97
Patrick

Développer vous permet de spécifier si vous souhaitez créer le chemin de destination dans son intégralité (par exemple: /path/missing1/missing2), ou créez le dernier répertoire uniquement lorsque son parent existe (/path/existing/missing).

56

Étant donné que expand fait partie de Grunt et n'est pas spécifique à grunt-contrib-copy, des informations à ce sujet peuvent être trouvées dans API de configuration de fichier de Grunt :

Définissez expand sur true pour activer les options suivantes:

  • cwd Toutes les correspondances de src sont relatives à (mais n'incluent pas) ce chemin.
  • src Motif (s) à faire correspondre, par rapport à cwd.
  • dest Préfixe du chemin de destination.
  • ext Remplacez toute extension existante par cette valeur dans les chemins générés dest.
  • extDot Utilisé pour indiquer où se situe la période indiquant l'extension. Peut prendre soit 'first' (l'extension commence après la première période du nom de fichier) ou 'last' (l'extension commence après la dernière période) et est définie par défaut sur 'first'.
  • flatten Supprimez toutes les parties de chemin des chemins générés dest.
  • rename Cette fonction est appelée pour chaque fichier src correspondant (après le changement de nom et l'aplatissement de l'extension). Le chemin dest et le chemin d'accès src correspondant sont transmis et cette fonction doit renvoyer une nouvelle valeur dest. Si le même dest est renvoyé plusieurs fois, chaque src qui l'a utilisé sera ajouté à un tableau de sources pour lui.

De plus, il semble que dest sera toujours considéré comme un répertoire de destination si vous définissez expand sur true.

79
David Pärsson