uglify tutorial serve grunt javascript gruntjs

javascript - tutorial - Copie todos los archivos del directorio a otro con la copia de Grunt.js



gulp js (5)

Esta tarea mantendrá la estructura de la carpeta si especifica un archivo glob. Lo que quiere es la opción flatten que eliminará la estructura.

{ expand: true, flatten: true, src: [''src/html/css/fonts/**''], dest: ''dist/myvoice/css/fonts/'', filter: ''isFile'' }

Encuentra el resto de las opciones disponibles en el repositorio Github . Espero que esto ayude.

Intento copiar todos los archivos en 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 a la que no puedo acceder:

{ src:"src/html/css/fonts/*", dest:"dist/myvoice/css/fonts/" }


La opción flatten: true como en esta respuesta podría funcionar en algunos casos, pero me parece que el requisito más común (como en mi caso) es copiar una carpeta y su estructura de subcarpetas, tal cual, a dest . Parece que, en la mayoría de los casos, si tiene subcarpetas, es probable que estén siendo referenciadas de esa manera en el código. La clave para hacerlo es la opción cwd , que conservará la estructura de la carpeta en relación con el directorio de trabajo especificado:

copy: { files: { cwd: ''path/to/files'', // set working folder / root to copy src: ''**/*'', // copy all files and subfolders dest: ''dist/files'', // destination folder expand: true // required when using cwd } }


Me gustaría agregar que cambiar el formato de glob en src modificará cómo funciona la copia.

Como se indica en bmoeskau arriba, lo siguiente copiará todo dentro de dist/ y lo moverá a path/to/dir (sobrescribiendo el destino si ya existe).

copy: { files: { expand: true, dest: ''path/to/dir'', cwd: ''dist/'', src: ''**'' } }

Sin embargo, tenga en cuenta que:

copy: { files: { expand: true, dest: ''path/to/dir'', cwd: ''dist/'', src: ''*'' } }

Solo copiará archivos dentro de dist/ así como en directorios, pero no copiará el contenido de esos directorios en el destino.

Además, lo siguiente con src: ''*/*'' solo copiará directorios con contenido dentro de dist/ . Es decir, los archivos dentro de dist/ no se copiarán.

copy: { files: { expand: true, dest: ''path/to/dir'', cwd: ''dist/'', src: ''*/*'' } }

Finalmente, lo mismo que arriba, pero src: ''**/**'' copiará solo los archivos dentro de dist/ y también los archivos dentro de dist/ subdirectories a path/to/dir . Entonces no habrá carpetas dentro del destino.

copy: { files: { expand: true, dest: ''path/to/dir'', cwd: ''dist/'', src: ''*/*'', flatten: true, filter: ''isFile'' } }


Si está desarrollando con yeoman angular, entonces esta es la mejor manera de copiar con gruñido. expand: true es obligatorio cuando se usa cwd. <% = yeoman.app%> es solo la ruta de la aplicación (''.'').

{ expand: true, cwd: ''<%= yeoman.app %>/data'', dest: ''<%= yeoman.dist %>/data'', src: [''**''] }


Tuve que usar egdy en lugar de llaves para el segmento de archivos (en Coffeescript) ...

copy: { files: [ cwd: ''path/to/files'' src: ''**/*'' dest: ''dist/files'' expand: true ] }