javascript - tutorial - npm grunt
¿Qué hace la opción "expandir" en grunt-contrib-copy? Todos los ejemplos lo usan pero los documentos no dicen nada sobre lo que hace (2)
Como expand
es una parte de Grunt, y no específica para grunt-contrib-copy, la información sobre esto se puede encontrar en la API de configuración de archivos de Grunt :
Establecer
expand
atrue
para habilitar las siguientes opciones:
cwd
Todas las coincidenciassrc
son relativas a (pero no incluyen) esta ruta.src
Patrón (s) para hacer coincidir, en relación con elcwd
.dest
Prefijo de ruta de destino.ext
Reemplace cualquier extensión existente con este valor en las rutas dedest
generadas.extDot
Se usa para indicar dónde se encuentra el período que indica la extensión. Puede tomar''first''
(la extensión comienza después del primer período en el nombre del archivo) o''last''
(la extensión comienza después del último período), y se configura de manera predeterminada como''first''
.flatten
Elimina todas las partes de camino de las rutas dedest
generadas.rename
Se llama a esta función para cada archivosrc
coincidente, (después del renombrado y aplanamiento de la extensión). Eldest
y la rutasrc
coincidente se pasan, y esta función debe devolver un nuevo valordest
. Si el mismodest
se devuelve más de una vez, cadasrc
que lo utilizó se agregará a una matriz de fuentes para él.
Además, parece que dest
siempre se considerará un directorio de destino si la configuración se expand
a true
.
- Aquí está el archivo README y ejemplos: https://github.com/gruntjs/grunt-contrib-copy/blob/master/README.md .
- Aquí está la parte relevante del código (que aparentemente no puedo entender) de https://github.com/gruntjs/grunt-contrib-copy/blob/master/tasks/copy.js :
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++; } }); });
Expandir le permite especificar si desea crear la ruta de destino completa (por ejemplo: /path/missing1/missing2
), o solo crea el último directorio cuando su principal existe ( /path/existing/missing
).