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;
}));
});