2013-03-22 17 views
12

Ich bin neu zu grunzen, immer noch zu lernen, so kam ich auf ein sehr seltsames Problem. Wenn ich "watch" Task ausführen, wird meine Befehlszeile blockiert, so dass ich grundsätzlich nichts tun kann. Denken Sie daran, dass die Aufgabe mit Erfolg abgeschlossen ist. Dies ist meine Befehlszeile Ausgabe:grunt watch Aufgabe blockieren die Befehlszeile

C:\server\css-test>grunt w 
Running "watch" task 
Waiting...OK 
>> File "compass-examples-master\02\sass\screen.scss" changed. 

Running "compass" (compass) task 
unchanged compass-examples-master/02/sass/ie.scss 
unchanged compass-examples-master/02/sass/print.scss 
overwrite compass-examples-master/02/stylesheets/new/sass/screen.css 

Running "watch" task 

Completed in 1.496s at Fri Mar 22 2013 19:31:37 GMT+0100 (Central Europe Standard Time) - Waiting... 

Wie Sie sehen können, alles, was ich "compass" Aufgabe ausführen zu tun ist, beendet sie erfolgreich.

Der Einfügepunkt blinkt nach dem Textteil, aber die Tastatureingabe funktioniert nicht.

Meine Grunzen Konfiguration

module.exports = function (grunt) 
{ 

    grunt.initConfig({ 
     pkg: grunt.file.readJSON('package.json'), 
     compass: { 
      dist: { 
       options: { 
        sassDir: 'compass-examples-master/02', 
        cssDir: 'compass-examples-master/02/stylesheets/new', 
        imagesDir: 'compas-examples-master/02/images', 
        boring: false, 
        outputStyle: 'nested', 
        require: 'sass-media_query_combiner' 
       } 
      } 
     }, 
     watch: { 
      files: 'compass-examples-master/02/sass/*', 
      tasks: ['c'] 
     } 
    }); 

    grunt.loadNpmTasks('grunt-contrib-watch'); 
    grunt.loadNpmTasks('grunt-contrib-compass'); 


    grunt.registerTask('c', 'compass'); 
    grunt.registerTask('w', 'watch'); 

}; 

Antwort

20

I havn't gebrauchte Grunzen Uhr, aber ich glaube, das Problem ist, dass es sich um einen kontinuierlich laufenden Prozess ist, und werden standardmäßig die Befehlszeilen laufen in der Regel einen Prozess zu einer Zeit, . Es gibt 3 Lösungen, die Sie verwenden können.

  1. Öffnen Sie ein neues Terminal. Sie können mehrere auf einmal geöffnet haben, so dass Sie die zweite als Hauptterminal verwenden können, während die grunt watch die andere belegt.
  2. Verwenden Sie das Symbol & in Ihrem Befehl. Dadurch wird der Prozess gestartet und die Befehlszeile sofort an Sie zurückgegeben, sodass Sie sie für andere Zwecke verwenden können. Sie können sich vorstellen, dass der Befehl im Hintergrund ausgeführt wird. Der Prozess ist weiterhin mit dem Terminalfenster verbunden. Wenn Sie das Fenster schließen, wird der Prozess beendet.

    Grunzen w &

  3. Use (&) um den Befehl. Dies wird im Hintergrund genauso ausgeführt wie nur &, jedoch wird der Prozess nicht beendet, wenn Sie das Terminalfenster schließen.

    (Grunzen w &)

+0

Ich glaube, das wird Ihr Problem lösen, aber wenn ich Ihre Frage missverstanden habe, entschuldige ich mich. –

+0

'&' funktioniert nicht. Das Öffnen eines neuen Terminals funktioniert jedoch. Gibt es irgendwo eine Dokumentation? Wie sind Sie auf das "" & "' und '(grunt w &)' gekommen? –

+0

Es tut mir leid die & sind * nix basiert, und irgendwie habe ich die C:/implizierenden Fenster nicht bemerkt. Dieser Link kann Sie in die richtige Richtung weisen, um dieses Verhalten unter Windows zu replizieren. http://www.tomshardware.com/forum/34598-45-windows-command-background-unix. Wenn Sie ungefähr auf die Hälfte der Seite schauen, wird ein 'Start'-Befehl erwähnt, der für mich so aussieht, als würde er funktionieren, aber ich bin mir nicht sicher. –

5

Für Windows verwenden

start grunt 

Dies wird ein CMD-Fenster bringen, die "watch" im Hintergrund wird und die git-bash verlassen oder cmd Fenster, in dem du gearbeitet hast, genauso wie du es verlassen hast.

Mit anderen Worten, dies wird die Aufgabe in einem separaten cmd-Fenster für Sie ausführen.

Ich wollte nur die Leute wissen lassen, dass dies nach den Kommentaren funktioniert.

5

Ich finde es einfacher, nur die Uhr Prozess zu stoppen. Dann kann ich dann die Befehlszeile verwenden, um Dinge zu tun, dann grunzen Uhr wieder laufen, wenn ich bereit bin, zurück zum Browser zu gehen.

Verwandte Themen