Estoy intentando copiar todos los archivos de un directorio a otro directorio como parte de mi proceso de compilación. Funciona bien para archivos individuales que especifico explícitamente, pero cuando trato de copiar todo el directorio, hace cosas raras como copiar la estructura completa del directorio (o nada en absoluto). Aquí está la parte relevante de mi GruntFile.js:
copy: {
myvoice: {
files: [
{ src:"src/html/index.html", dest:"dist/myvoice/index.html" },
{ src:"src/html/css/style.css", dest:"dist/myvoice/css/style.css" },
{ src:"src/html/js/require.js", dest:"dist/myvoice/js/require.js" },
{ src:"build/myvoice/main.js", dest:"dist/myvoice/js/main.js" },
{ src:"src/html/css/fonts/*", dest:"dist/myvoice/css/fonts/" }
]
}
},
Específicamente, es la última línea que no puedo hacer para trabajar:
{ src:"src/html/css/fonts/*", dest:"dist/myvoice/css/fonts/" }
fuente
cwd
opciones, asegúrese de girarexpand:true
. Si no lo configuraexpand:true
, cwd no funcionará correctamente.flatten: false
para que esto funcione.**/*
Eso es lo que estaba buscando, estaba usando ** gracias hombre.Esta tarea mantendrá la estructura de la carpeta si especifica un archivo global. Lo que quieres es la
flatten
opción que eliminará la estructura.Encuentre el resto de las opciones disponibles en el repositorio de Github . Espero que esto ayude.
fuente
Me gustaría agregar que cambiar el formato del glob en src modificará cómo funciona la copia.
Como lo señaló bmoeskau anteriormente, lo siguiente copiará todo lo que hay adentro
dist/
y lo moverápath/to/dir
(sobrescribiendo el destino si ya existe).Sin embargo, tenga en cuenta que:
Solo copiará archivos dentro
dist/
y directorios, pero no copiará el contenido de esos directorios al destino.Además, la siguiente con
src: '*/*'
voluntad única copia directorios con contenido dentrodist/
. Es decir,dist/
no se copiarán los archivos que están justo adentro .Finalmente, lo mismo que el anterior, pero solo
src: '**/**'
copiará los archivos dentro y los archivos dentro de los subdirectorios a . Entonces no habrá carpetas dentro del destino.dist/
dist/
path/to/dir
fuente
**
siempre significa archivos y directorios, y*
solo archivos?*
s adyacentes usados como un solo patrón coincidirán con todos los archivos y cero o más directorios y subdirectorios . Si sigue a/
, dos*
s adyacentes coincidirán solo con directorios y subdirectorios .**
coincide con todo , mientras que**/
solo con directorios y subdirectorios (no archivos).Tuve que usar egdy en lugar de llaves para el segmento de archivos (en Coffeescript) ...
fuente
Si está desarrollando con angular yeoman, entonces esta es la mejor manera de copiar con gruñido. expand: true es obligatorio cuando se utiliza cwd. <% = yeoman.app%> es solo la ruta de la aplicación ('.').
fuente