0

Ich habe ein ziemlich einfaches Setup mit sass, watch und uglify, aber aus irgendeinem Grund kann ich nicht wachen, um zu erkennen, wenn eine js-Datei gespeichert wird. Es funktioniert gut für SCSS/CSS (kompiliert und neu geladen.) Wenn ich 'grunt uglify' starte, bündelt es meine JS-Dateien, und wenn die Uhr läuft (in einer anderen Konsoleninstanz), wird sie es erkennen und das Nachladen auslösen.Uglify funktioniert nicht mit Grunt Watch

Ich habe viele Kombinationen ausprobiert und ich habe das Gefühl, dass es etwas wirklich Dummes ist, was ich mache/nicht mache, aber ich sehe es einfach nicht.

mein gruntfile.js:

module.exports = function(grunt) { 
    grunt.registerTask('default', ['sass', 'uglify']); 
    grunt.initConfig({ 
    sass: { 
     dist: { 
     options: { 
      style: 'expanded' 
     }, 
     files: { 'fivesixtwo.com/src/FiveSixTwo.com/wwwroot/css/main.css': 'fivesixtwo.com/src/FiveSixTwo.com/wwwroot/css/main.scss' } 
     } 
    }, 
    uglify: { 
     my_target: { 
     files: { 
      'fivesixtwo.com/src/FiveSixTwo.com/wwwroot/js/site.js': [ 
      'fivesixtwo.com/src/FiveSixTwo.com/wwwroot/lib/jquery/dist/jquery.js', 
      'fivesixtwo.com/src/FiveSixTwo.com/wwwroot/lib/*.js' 
      ] 
     } 
     } 
    }, 
    watch: { 
     options: { 
     livereload: 35729, 
     }, 
     html: { 
     files: ['fivesixtwo.com/src/FiveSixTwo.com/Views/*.cshtml'], 
     }, 
     sass: { 
     options: { 
      livereload: false 
     }, 
     files: ['fivesixtwo.com/src/FiveSixTwo.com/wwwroot/css/*.scss'], 
     tasks: ['sass'] 
     }, 
     css: { 
     files: ['fivesixtwo.com/src/FiveSixTwo.com/wwwroot/css/main.css'], 
     tasks: [] 
     }, 
     scripts: { 
     files: ['fivesixtwo.com/src/FiveSixTwo.com/wwwroot/js/site.js'], 
     tasks: ['uglify'] 
     } 
    } 
    }); 

    grunt.loadNpmTasks('grunt-contrib-watch'); 
    grunt.loadNpmTasks('grunt-contrib-sass'); 
    grunt.loadNpmTasks('grunt-contrib-uglify'); 

}; 

Antwort

1

Blick auf die Uhr config:

scripts: { 
    files: ['fivesixtwo.com/src/FiveSixTwo.com/wwwroot/js/site.js'], 
    tasks: ['uglify'] 
} 

Sie sind nur site.js genannt für eine einzelne js Dateien Änderungen zu beobachten. Um alle Ihre Quellen zu sehen, verwenden Sie diese Konfig:

scripts: { 
    files: ['fivesixtwo.com/src/FiveSixTwo.com/wwwroot/lib/*.js'], 
    tasks: ['uglify'] 
} 

Verwenden Sie das gleiche Muster wie in der Uglify-Konfiguration. Ich nahm an, dass Sie jQuery nicht selbst modifizieren werden.

+0

Ja, das war es total. Beeindruckend. Wie kommt das Gehirn in einen Zustand, in dem es einfach nicht an etwas vorbei kommt, egal wie einfach die Lösung ist? In meinem Kopf sollte es so funktioniert haben, wie ich es hatte, weil ich eine einzige JS-Datei erzeuge, und ich beobachte nur _it_ für Änderungen. Es scheint so zu sein, dass der CSS arbeitet. Es wird diese Datei angesehen und 'uglify' ausgeführt, was die Uglify-Aufgabe ausführen und meine js-Dateien bündeln sollte. Jetzt sehe ich, dass es nicht funktioniert. Es ist immer noch ein bisschen verwirrend, aber zumindest weiß ich, wie es * eingerichtet * werden soll. ;) Ich _really_ hoffe das hilft jemand anderem! – sinrise

+1

@sinrise Sie sind herzlich willkommen. –