tutorial que grunt con compilar javascript copy gruntjs

javascript - con - que es grunt



Configurar la tarea de copia de grunt para excluir archivos/carpetas (5)

Quería excluir todos los archivos .gz en mi copia y esta opción hizo el trabajo para todas las carpetas

{ expand: true, cwd: ''./build/www/'', src: [ ''**'', ''!**/*.gz'' ], dest: ''./mydDest'' }

¡Así que puede intentarlo !**/*.less, !gruntfile.js (sin parens)

He instalado la tarea grunt-contrib-copy . Lo incrusto en mi Gruntfile.js y Gruntfile.js la tarea a través de grunt.loadNpmTasks(''grunt-contrib-copy''); .

Actualmente uso la siguiente configuración para crear una carpeta con un subconjunto de mis archivos / carpetas js.

copy: { options: { processContent: [], processContentExclude: [''build/**'', ''bin/**'', ''.*'', ''*.orig'', ''*.bak'', ''.*/**'', ''*.log'', ''dist/**'', ''test/**'', ''dev/**'', ''pyserver/**'', ''node_modules/**'', ''doc/**''] }, du: { files: [ {src: [''.conf1'', ''.conf2'', ''./config.js''], dest: ''output/toolkit/'', filter: ''isFile''}, {src: [''./css/**/*'', ''./img/**/*'', ''./js/**/*'', ''./release/**/*'', ''./lib/**/*'', ''./locale/**/*''], dest: ''output/toolkit/''}, {expand: true, cwd: ''./'', src: [''**''], dest: ''output/''} ] } }

Esto funciona bien, pero cada vez que ejecuto copia ronca sale con el siguiente mensaje de error:

Copying Gruntfile.js -> output/Gruntfile.js Warning: Error while processing "Gruntfile.js" file. Use --force to continue.

Me gustaría excluir Gruntfile.js y todos los archivos *.less en js/**/* . Intenté con !(.less), !.less, !(*.less), !(./Grunfile.js), !(*Gruntfile.js) ... Pero nada funciona. Se agregó a la matriz processContentExclude , pero sin éxito también.

Entonces, ¿cómo puedo excluir el Gruntfile.js y todos los archivos menos en la estructura de carpetas js/**/* ?


Si tienes la libertad de cambiar a una tarea Grunt diferente:

También hay https://github.com/clavery/grunt-copy-to que tiene una opción explícita de "ignorar" para especificar archivos y directorios para omitir. El archivo README en Github muestra una configuración de ejemplo que incluye opciones de ignorar.

Funciona un poco diferente de la copia normal, ya que respeta los tiempos de modificación. Pero eso en realidad podría ser bienvenido (fue en mi caso).

Del LÉAME:

Al igual que grunt-contrib-copy, solo copia los archivos que son más nuevos y mantiene tiempos modificados para los archivos copiados. Es útil para crear directorios de compilación que luego se pueden sincronizar utilizando herramientas que dependen de los tiempos modificados del archivo.

(Solo soy un usuario de ese proyecto (al menos hasta ahora).)


Encontré la solución:

No hay necesidad de estas líneas:

files: [ {src: [''.conf1'', ''.conf2'', ''./config.js''], dest: ''output/toolkit/'', filter: ''isFile''}, {src: [''./css/**/*'', ''./img/**/*'', ''./js/**/*'', ''./release/**/*'', ''./lib/**/*'', ''./locale/**/*''], dest: ''output/toolkit/''}, {expand: true, cwd: ''./'', src: [''**''], dest: ''output/''} ]

porque {expand: true, cwd: ''./'', src: [''**''], dest: ''output/''} es un nuevo paso de copia, copiando todos los archivos de ./ a la output . Lo cual no es necesario para mí, porque las líneas anteriores ya están copiando los archivos necesarios en output/toolkit .

Entonces las siguientes dos líneas hacen el trabajo. Sin necesidad de opciones ni nada más. Para mantener fuera los archivos *.less ''!**/*.less'' *.less ''!**/*.less'' hace el trabajo.

files: [ {src: [''.conf1'', ''.conf2'', ''config.js''], dest: ''output/toolkit/'', filter: ''isFile''}, {src: [''css/**'', ''img/**'', ''js/**'', ''release/**'', ''lib/**'', ''locale/**'', ''!**/*.less''], dest: ''output/toolkit/''} ]


Creo que esto debería hacerlo. No es necesario para /**/* . /** cubre todos los archivos en ruta y sus subdirectorios

{src: [''./css/**'', ''./img/**'', ''./js/**'', ''./release/**'', ''./lib/**'', ''./locale/**''], dest: ''output/toolkit/''}, {expand: true, cwd: ''./'', src: [''**''], dest: ''output/''}


Suponiendo que ''Gruntfile.js'' está en el directorio raíz, la última línea de las opciones de copia está configurándolo para copiar todo en root a ''output /''.

Si esto es así, agregue ''! Gruntfile.js'' a su matriz de rutas de archivos src.

{ expand: true, cwd: ''./'', src: [''**''], // ex. src: [''**'', ''!Gruntfile.js''], dest: ''output/'' }

Consulte estas soluciones de este hilo y el hilo original