Okej, utknąłem na tym przez 2 tygodnie, więc mam nadzieję, że ktoś inny przeszedł przez ten problem. Próbuję użyć Grunta do skopiowania tylko plików, które się zmieniły. Widziałem liczne przykłady tego, jak to zrobić z JSLINT i UGLIFY, ale nie ma konkretnych przykładów, jak to zrobić z grunt-contrib-copy.Grunt Watch Event z Grnt Copy dla tylko zmienionych plików
Po zarejestrowaniu zdarzenia oglądania i przesłaniu nazwy pliku do podzadania kopii nazwa pliku jest dostępna (wylogowuję się), ale plik nie jest prawidłowo kopiowany.
Mam nadzieję, że jest to prosta rzecz, którą przeoczyłem. Czy ktoś mógłby rzucić okiem na mój kod i zobaczyć, co robię źle?
//Gruntfile.js:
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
options: {
base: 'app',
dist: 'dist',
},
copy: {
changedFiles: {
expand: true,
dot: true,
cwd: '<%= options.base %>',
src: ['**/*.*'],
dest: '<%= options.dist %>/'
}
},
watch: {
options: {
nospawn: true,
//debounceDelay: 1000,
},
css: {
files: ['app/css/*.css',
'app/js/*.js'
],
tasks: ['copy:changedFiles'],
}
}
});
grunt.event.on('watch', function(action, filepath, target){
grunt.log.writeln('target: ', target + '\n filepath: ' + filepath + '\n action: has ' + action);
grunt.config('copy.changedFiles.src', new Array(filepath));
});
//load our copy task
grunt.loadNpmTasks('grunt-contrib-copy');
//load our watch task
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('copyChangedFiles', [
'watch:css'
]);
};
Zasadniczo moja konfiguracja folder jest jako takie:
-app
| - css
| - js
-dist
patrzę folder aplikacji i próbuje skopiować pliki, które zmieniają się w katalogu aplikacji i skopiuj je do katalogu dist. Dynamiczne modyfikowanie src kopii wydaje się nie działać.
Zadanie kopiowania po uruchomieniu z zegarem, a nie z zegarka działa dobrze i kopiuje każdy plik, ale jestem zainteresowany kopiowaniem tylko tych plików, które się zmieniają.
Próbowałem również odmianę tego w moim przypadku zegarka, bezskutecznie:
var copyDest = filepath.replace(grunt.config('copy.changedFiles.dest'), '');
var copyCwd = filepath.replace(grunt.config('copy.changedFiles.cwd'), '');
grunt.config('copy.changedFiles.cwd' , copyCwd);
grunt.config(['copy', 'changedFiles', 'src'] , [filepath]);
Czy ktoś kiedykolwiek udało się zrobić to przed użyciem grunt kopię? Czy jest jeszcze inne zadanie, którego powinienem użyć? Próbowałem tego samego z gruntową synchronizacją i to też nie działa. Utknąłem.
Dzięki za pomoc.