pattern node globs node.js glob gulp

node.js - node - Use gulp para seleccionar y mover directorios y sus archivos



glob pattern (2)

Debe incluir la opción base en src, que conservará la estructura de archivos de la manera que desee:

var filesToMove = [ ''./_locales/**/*.*'', ''./icons/**/*.*'', ''./src/page_action/**/*.*'', ''./manifest.json'' ]; gulp.task(''move'',[''clean''], function(){ // the base option sets the relative root for the set of files, // preserving the folder structure gulp.src(filesToMove, { base: ''./'' }) .pipe(gulp.dest(''dist'')); });

Además, es probable que tenga problemas en el futuro si tiene todos estos archivos fuente en la raíz de su proyecto.

Si puede, le recomendaría que use una sola carpeta src/ y mueva todos sus archivos específicos de la aplicación allí. Esto hace que el mantenimiento sea más fácil de seguir y evita que sus archivos específicos de compilación se mezclen con los archivos específicos de su aplicación.

Si hace esto, simplemente reemplace todas las ocurrencias de ./ con src/ en el ejemplo anterior.

Actualmente estoy usando gulp para llamar a un script bash que limpia mi directorio dist/ y mueve los archivos apropiados al directorio limpio. Me gustaría que esto se haga con gulp porque no estoy seguro de que el script funcione en un sistema de archivos no * nix.
Hasta ahora, estoy usando el módulo gulp-clean para limpiar el directorio dist/ pero cuando intento mover los directorios requeridos y sus archivos a la carpeta dist, los directorios están vacíos.

var gulp = require(''gulp''), clean = require(''gulp-clean''); gulp.task(''clean'', function(){ return gulp.src([''dist/*''], {read:false}) .pipe(clean()); }); gulp.task(''move'',[''clean''], function(){ gulp.src([''_locales'', ''icons'', ''src/page_action'', ''manifest.json'']) .pipe(gulp.dest(''dist'')); }); gulp.task(''dist'', [''move'']);

llamar a gulp dist da como resultado que el directorio dist/ se rellene con los directorios correctos, pero están todos vacíos

$ ls dist/* dist/manifest.json dist/_locales: dist/icons: dist/page_action:

¿Cómo copio los directorios y sus contenidos en la carpeta dist/ ?


La pregunta original se dirige solo a directorios (también conocidos como carpetas) en su gulp.src , es decir, gulp.src([''_locales'', ... en este ejemplo, _locales es el nombre de un directorio .

La respuesta aceptada usa un patrón gulp.src en su gulp.src para apuntar a los archivos en cualquier lugar de esos directorios, es decir, gulp.src([''./_locales/**/*.*'', ... , (observe los asteriscos dobles , y los asteriscos filename.extension ). La respuesta aceptada funciona ...

... pero la respuesta aceptada solo enfatiza la opción base :

Necesita incluir la opción base para src ...

Experimenté y encontré:

  1. Estrictamente hablando, no es necesario usar la opción base para lograr lo que el OP pidió: "... y mueve los archivos apropiados al directorio limpio". La opción base hecho conserva la estructura de carpeta + archivo (como se describe en la respuesta aceptada), pero la opción base no es suficiente para mover los archivos como se solicitó OP. Preservar la estructura de carpeta + archivo es probablemente lo que el OP espera , por lo que la respuesta aceptada es buena, pero ...

  2. Solo para reiterar lo que mueve los archivos, son los patrones glob :

    1. Doble asterisco ( .../**/... ) busca recursivamente en todas las subcarpetas y subcarpetas ''subcarpetas'', etc.

    2. Filename.extension asterisks ( .../*.* ) Busca archivos de todos los nombres y todas las extensiones . ¡Así que creo que esta parte merece el mayor énfasis!

  3. La respuesta aceptada cambia algo más; agrega un prefijo de ./ a cada argumento de ruta pasado a gulp.src . Creo que eso es innecesario / redundante; si no hay ./ , (como en la pregunta OP), las rutas se resuelven en relación con el directorio actual, lo que da como resultado el mismo comportamiento . Pero tal vez es una buena práctica ser explícito con ./

Avísame si me equivoco ...