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
expandatruepara habilitar las siguientes opciones:
cwdTodas las coincidenciassrcson relativas a (pero no incluyen) esta ruta.srcPatrón (s) para hacer coincidir, en relación con elcwd.destPrefijo de ruta de destino.extReemplace cualquier extensión existente con este valor en las rutas dedestgeneradas.extDotSe 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''.flattenElimina todas las partes de camino de las rutas dedestgeneradas.renameSe llama a esta función para cada archivosrccoincidente, (después del renombrado y aplanamiento de la extensión). Eldesty la rutasrccoincidente se pasan, y esta función debe devolver un nuevo valordest. Si el mismodestse devuelve más de una vez, cadasrcque 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 ).