uglify grunt example gruntjs grunt-contrib-copy

gruntjs - uglify - grunt watch example



sintaxis grunt-contrib-copy para confusiĆ³n de opciones de proceso (2)

Esto no parece ser un problema con la opción de process en absoluto, pero más un problema con srcThemeDir . Me gustaría iniciar sesión para asegurarme de que sabe exactamente qué es, ya que parece que está haciendo que la tarea de copy no encuentre ningún archivo (y por lo tanto no llame a la función de proceso).

Estoy tratando de reemplazar algunos marcadores de posición en diferentes archivos mientras copio. My gruntfile funciona bien, pero al agregar la opción de proceso para hacer los reemplazos, simplemente no está funcionando. A continuación se muestra la sección relevante de mi archivo gruñido:

grunt.initConfig({ copy: { js: { files: [{ expand: true, cwd: ''src/wp-content/themes/pilau-starter/'', src: [''**/*.js''], dest: ''public/wp-content/themes/pilau-starter/'' }], options: { process: function ( content ) { console.log( content ); content = content.replace( /pilauBreakpointLarge/g, breakpoints.large ); content = content.replace( /pilauBreakpointMedium/g, breakpoints.medium ); return content; } } }, } });

Las rutas se pueden entender en el contexto del código en GitHub: https://github.com/pilau/starter (el directorio público no está comprometido con el repositorio porque es un tema inicial). Esas rutas son variables en mi Gruntfile original, y funcionan bien en todas las demás tareas.

Todos los vars están configurados OK. He incluido el console.log( content ) para verificar si la función del proceso se está ejecutando en realidad, no parece ser así, así que supongo que es una sintaxis básica.

Hay una respuesta ( https://stackoverflow.com/a/28600474/1087660 ) que parece abordar esto, pero por lo que puedo decir, esa forma de hacerlo es simplemente mala sintaxis JS - no estoy seguro de cómo se marcó como derecho.

--verbose para ejecutar la tarea de copia:

Running "copy:js" (copy) task Verifying property copy.js exists in config...OK Files: src/wp-content/themes/pilau-starter/js/admin.js -> public/wp-content/themes/pilau-starter/js/admin.js Files: src/wp-content/themes/pilau-starter/js/flickity.js -> public/wp-content/themes/pilau-starter/js/flickity.js Files: src/wp-content/themes/pilau-starter/js/global.js -> public/wp-content/themes/pilau-starter/js/global.js Files: src/wp-content/themes/pilau-starter/js/modernizr.js -> public/wp-content/themes/pilau-starter/js/modernizr.js Files: src/wp-content/themes/pilau-starter/js/picturefill.js -> public/wp-content/themes/pilau-starter/js/picturefill.js Files: src/wp-content/themes/pilau-starter/js/respond.js -> public/wp-content/themes/pilau-starter/js/respond.js Options: processContent=false, processContentExclude=[], process=undefined Options: processContent=false, processContentExclude=[], process=undefined Copying src/wp-content/themes/pilau-starter/js/admin.js -> public/wp-content/themes/pilau-starter/js/admin.js Reading src/wp-content/themes/pilau-starter/js/admin.js...OK Writing public/wp-content/themes/pilau-starter/js/admin.js...OK


Su versión de grunt-contrib-copy es 0.4.0. Como señala correctamente por @nemesv arriba, el nombre de propiedad para usar en esta versión sería processContent not process .

Cloné tu repositorio y json-breakpoints rama json-breakpoints . Y ejecutó grunt copy:js y reemplazó el contenido.

Ahora, cuando ejecuta grunt copy:js --verbose aún mostrará esto

processContent se registra indefinido porque grunt usa JSON.stringify para registrar un valor. Y JSON.stringify devuelve undefined cuando le pasa una definición de función.

Si está interesado, este es el método responsable de registrar toda la opción

Log.prototype.writeflags = function(obj, prefix) { var wordlist; if (Array.isArray(obj)) { wordlist = this.wordlist(obj); } else if (typeof obj === ''object'' && obj) { wordlist = this.wordlist(Object.keys(obj).map(function(key) { var val = obj[key]; return key + (val === true ? '''' : ''='' + JSON.stringify(val)); })); } this._writeln((prefix || ''Flags'') + '': '' + (wordlist || ''(none)''.cyan)); return this; };