Okay, ich bin seit 2 Wochen dabei, also hoffentlich ist hier jemand anderes auf dieses Problem gestoßen. Ich versuche mit Grunt nur Dateien zu kopieren, die sich geändert haben. Ich habe zahlreiche Beispiele gesehen, wie man das mit JSLINT und UGLIFY macht, aber keine konkreten Beispiele dafür, wie man das mit grunt-contrib-copy macht.Grunt Watch Event mit Grunt Copy für nur geänderte Dateien
Wenn Sie ein Überwachungsereignis registrieren und den Dateinamen an die Kopie-Unteraufgabe übergeben, können Sie auf den Dateinamen zugreifen (ich melde mich ab), aber die Datei wird niemals ordnungsgemäß kopiert.
Ich hoffe, es ist eine einfache Sache, die ich übersehe. Könnte jemand bitte meinen Code ansehen und sehen, was ich falsch mache?
//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'
]);
};
Grundsätzlich meine Ordner Setup ist als solche:
-app
| - css
| - js
-dist
ich die app Ordner gucke und versuchen, Dateien zu kopieren, die im App-Verzeichnis zu ändern, und kopieren Sie sie in das Verzeichnis dist. Es scheint nicht zu funktionieren, die Kopie src dynamisch zu modifizieren.
Die Kopie Aufgabe, wenn sie selbst mit Uhr und nicht auf der Uhr Veranstaltung läuft funktioniert gut und kopiert jede Datei über, aber ich bin nur daran interessiert, nur Dateien zu kopieren, die sich ändern.
Ich habe auch versucht, eine Variation dieses innerhalb meiner Uhr Veranstaltung, ohne Erfolg:
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]);
Hat jemand schon einmal dies erfolgreich getan, bevor Grunzen Kopie verwenden? Oder gibt es eine andere Aufgabe, die ich verwenden sollte? Ich habe das gleiche mit grunt-sync versucht und das schien auch nicht zu funktionieren. Ich stecke fest.
Danke für die Hilfe.