solo nuevos modificados copiar archivos plugins task gruntjs

plugins - nuevos - Gruntjs: cómo hacer una tarea de copia para copiar solo los archivos modificados a la vista



copiar solo archivos nuevos o modificados xcopy (2)

Así que en la página de información del complemento de grunt-contrib-watch, hay un ejemplo sobre cómo hacer que jshint se ejecute solo para el archivo modificado.

grunt.initConfig({ watch: { scripts: { files: [''lib/*.js''], tasks: [''jshint''], options: { nospawn: true, }, }, }, jshint: { all: [''lib/*.js''], }, }); grunt.event.on(''watch'', function(action, filepath) { grunt.config([''jshint'', ''all''], filepath); });

No lo he probado yo mismo. Pero tomé esto y lo apliqué a mi tarea de copia, sin éxito. Tarea grunt-contrib-copy configurada para copiar imágenes y plantillas para mi proyecto angular. Y me encantaría saber si puedo hacer que esto funcione para una tarea de copia y, si puedo, qué estoy haciendo mal.

Muchas gracias.

Aquí está mi Gruntfile.js eliminado.

// Build configurations. module.exports = function(grunt){ // Project configuration. grunt.initConfig({ pkg: grunt.file.readJSON(''package.json''), // Copies directories and files from one location to another. copy: { // DEVELOPMENT devTmpl: { files: [{ cwd : ''src/tpl/'', src : [''**/*''], dest : ''app/tpl/'', flatten : false, expand : true }] }, devImg: { files: [{ cwd : ''src/img/'', src : [''**/*''], dest : ''app/img/'', flatten : false, expand : true }] } }, // Watch files for changes and run tasks watch: { // Templates, copy templates: { files : ''src/tpl/**/*'', tasks : [''copy:devTmpl''], options: { nospawn: true, } }, // Images, copy images: { files : ''src/img/**/*'', tasks : [''copy:devImg''], options: { nospawn: true, } } } }); // Watch events grunt.event.on(''watch'', function(action, filepath) { // configure copy:devTmpl to only run on changed file grunt.config([''copy'',''devTmpl''], filepath); // configure copy:devImg to only run on changed file grunt.config([''copy'',''devImg''], filepath); }); // PLUGINS: grunt.loadNpmTasks(''grunt-contrib-copy''); // TASKS: /* DEV: Compiles the app with non-optimized build settings, places the build artifacts in the dist directory, and watches for file changes. run: grunt dev */ grunt.registerTask(''dev'', ''Running "DEVELOPMENT", watching files and compiling...'', [ ''default'', ''watch'' ]); /* DEFAULT: Compiles the app with non-optimized build settings and places the build artifacts in the dist directory. run: grunt */ grunt.registerTask(''default'', ''Running "DEFAULT", compiling everything.'', [ ''copy:devTmpl'', ''copy:devImg'' ]); }


Use grunt-sync ( https://npmjs.org/package/grunt-sync ) en lugar de grunt-contrib-copy, y observe los directorios que desea sincronizar.

Actualización - aquí hay un ejemplo:

grunt.initConfig({ sync: { copy_resources_to_www: { files: [ { cwd: ''src'', src: ''img/**'', dest: ''www'' }, { cwd: ''src'', src: ''res/**'', dest: ''www'' } ] } } });

cwd significa directorio de trabajo actual. copy_resources_to_www es solo una etiqueta.


grunt.config apuntar grunt.config a la propiedad correcta en su configuración:

grunt.event.on(''watch'', function(action, filepath) { var cfgkey = [''copy'', ''devTmpl'', ''files'']; grunt.config.set(cfgkey, grunt.config.get(cfgkey).map(function(file) { file.src = filepath; return file; })); });