deployment - script - mover todos los archivos de un directorio a otro linux
¿Cómo copio directorios recursivamente con gulp? (4)
Entonces, la solución de proporcionar una base funciona dado que todas las rutas tienen la misma ruta base. Pero si desea proporcionar rutas base diferentes, esto aún no funcionará.
Una forma en que resolví este problema fue relacionando el comienzo de la ruta. Para su caso:
gulp.src([
''index.php'',
''*css/**/*'',
''*js/**/*'',
''*src/**/*'',
])
.pipe(gulp.dest(''/var/www/''));
La razón por la que esto funciona es porque Gulp establece la base para ser el final del primer fragmento explícito: el * leading hace que establezca la base en el cwd (¡que es el resultado que todos queremos!)
Esto solo funciona si puede asegurarse de que su estructura de carpetas no tenga ciertas rutas que podrían coincidir dos veces. Por ejemplo, si tuviera randomjs/
en el mismo nivel que js
, terminaría emparejando ambos.
Esta es la única forma que he encontrado para incluir estos como parte de una función gulp.src de alto nivel. Sin embargo, probablemente sería sencillo crear un complemento / función que pudiera separar cada uno de esos componentes para que pueda especificar el directorio base para ellos.
Estoy intentando organizar un proyecto de un directorio de trabajo a un servidor (la misma máquina). Usando el siguiente código:
gulp.src([
''index.php'',
''css/**'',
''js/**'',
''src/**'',
])
.pipe(gulp.dest(''/var/www/''));
Esperaría ver todos los archivos copiados. Sin embargo, aplana la estructura del directorio: todos los directorios se copian, pero cada archivo se ubica en la raíz /var/www
Gulp parece una gran herramienta de compilación, pero copiar elementos debería ser un proceso simple, ¿no?
Lo siguiente funciona sin aplanar la estructura de la carpeta:
gulp.src([''input/folder/**/*'']).pipe(gulp.dest(''output/folder''));
El ''**/*''
es la parte importante. Esa expresión es un glob que es una poderosa herramienta de selección de archivos. Por ejemplo, para copiar solo archivos .js, use: ''input/folder/**/*.js''
Resulta que para copiar una estructura de directorio completa, gulp
debe proporcionarse con una base para su método gulp.src()
.
Entonces gulp.src( [ files ], { "base" : "." })
Se puede usar en la estructura anterior para copiar todos los directorios recursivamente.
Si, como yo, puede olvidarse de esto, intente:
gulp.copy=function(src,dest){
return gulp.src(src, {base:"."})
.pipe(gulp.dest(dest));
};
Si desea copiar todo el contenido de una carpeta recursivamente en otra carpeta, puede ejecutar el siguiente comando de Windows desde gulp:
xcopy /path/to/srcfolder /path/to/destfolder /s /e /y
La opción /y
al final es para suprimir el mensaje de confirmación de sobrescritura.
En Linux, puede ejecutar el siguiente comando desde gulp:
cp -R /path/to/srcfolder /path/to/destfolder
puede usar el complemento gulp-exec o gulp-run para ejecutar comandos del sistema desde gulp.
Enlaces relacionados: