2014-10-07 15 views
5

Ich habe Probleme beim Konfigurieren von Grunt, um meine Projektdateien anzusehen, eine Seite neu zu erstellen und zu aktualisieren, die auf einem Verbindungsserver gehostet wird. Wenn ich eine der Build-Aufgaben und dann 'watch' als Teil einer kombinierten Aufgabe ausführen, dann scheint 'watch' in einer Schleife stecken zu bleiben, endlos die Nachricht zu drucken.Grunt Watch zeigt wiederholt "Warnung: muss Muster bereitstellen"

Running "watch" task 
Waiting... 
Warning: must provide pattern 

Wenn ich stattdessen nur $ grunt watch laufen, es wird gerne meine Quelldateien sehen und kompilieren/gegebenenfalls bauen.

Ich denke, die jeweilige Aufgabe Konfigurationen sind diese:

watch: { 
    html: { 
    files: [ '<%= site.partials %>', '<%= site.layouts %>', '<%= site.pages %>' ], 
    tasks: [ 'html' ] 
    }, 
    sass: { 
    files: [ '<%= site.src %>sass/*.scss' ], 
    tasks: [ 'styles' ] 
    } 
}, 

// development server 
connect: { 
    options: { 
    port: 8080, 
    livereload: 35729, 
    hostname: 'localhost', 
    }, 
    dev: { 
    options: { 
     directory: 'build', 
    } 
    } 
}, 

und die Aufgabendefinitionen:

grunt.registerTask('build', [ 'styles', 'html', ]); 
grunt.registerTask('default', [ 'build','connect:dev', 'watch' ]); 

Die 'styles' und 'html' Aufgaben Grunzen-Sass laufen und montieren. Wie bereits erwähnt, führt das Ausführen einer dieser Aufgaben oder sogar 'watch' allein zu den erwarteten Ergebnissen. Dies deutet darauf hin, dass mein Config-Objekt site.partials, site.dest usw. korrekt definiert hat. Das Problem tritt nur auf, wenn ich irgendeine Aufgabe und dann 'watch' wie in der Standardaufgabe ausführen.

+0

Ich vermute, dass das Problem in den Vorlagen ist, die auf das Objekt 'site' verweisen. Aber ohne diesen Teil Ihres 'grunt.initConfig'-Anrufs zu sehen, kann ich wirklich nicht sagen. Ich weiß, dass diese Frage jetzt alt ist, aber kannst du entweder deine gesamte Gruntfile posten oder, wenn du das Problem gelöst hast, deine Antwort posten? – matty

Antwort

-1

connect: dev ist das Problem. Entfernen Sie das und es sollte gut funktionieren.

+0

'grunt-contrib-connect' ist eine Multi-Task und sollte in der Lage sein, mehrere Ziele gleichzeitig zu behandeln. Ihre Dokumentation schlägt sogar zahlreiche Beispiele vor. Warum würde ein einfaches Ziel mit einer Option (eine Option connect benötigt) ein Problem verursachen? –

+0

Ohne weitere Erklärung ist dieser Kommentar zufällig, vielleicht von einem Jean-Bot erstellt. Der Zweck der Beantwortung besteht darin, sowohl das ursprüngliche Plakat als auch andere Leser zu informieren. Warum ist 'connect: dev' ein Problem? Ich vermute es ist nicht. – matty

13

Ich hatte gerade ein ähnliches Problem, als ich meine Gruntfile bearbeitet und ein Feld (das ein Dateimuster hätte haben sollen) leer gelassen hatte.

Überprüfen Sie Ihre Gruntfile auf ein leeres Dateifeld.

In meinem speziellen Beispiel:

wiredep: { 
    options: { 
     overrides: { 
      "jquery-ui": { 
       "main": [ 
       "jquery-ui.js", 
       "themes/base/jquery-ui.css", 
       "" 
       ] 
      } 
     } 
    } 
} 

Beachten Sie die leeren oben Zeichenfolge. Das hat einen Fehler verursacht, der dem deines sehr ähnlich ist. Es scheint, dass Grunt Ihnen nicht sagt, wo der Fehler leider ist. Sie müssen nur manuell durch Ihre Gruntfile scannen, um den Fehler zu finden.

+0

Danke. Hatte denselben Fehler wegen des gleichen Problems wie du. –

+0

Grunt ist wirklich nutzlos, um Sie wissen zu lassen, wo der Fehler liegt, nahm mich ewig, um es aufzuspüren, aber es war genau das. –

+1

In diesem Kontext ist ein String wie '" <% = cfg.foo%> "auch leer, wenn in' cfg' kein 'foo' steht. Das ist das Problem, das ich hatte. – JonnyJD

Verwandte Themen