2013-03-22 17 views
12

Jestem nowy, mamusiu, wciąż się uczę, więc doszedłem do bardzo dziwnego problemu. Po uruchomieniu zadania "watch" moja linia poleceń zostanie zablokowana, więc zasadniczo nie mogę nic na niej zrobić. Bare pamiętać, że zadanie jest zakończone z sukcesem. To moje wyjście z linii poleceń:Zadanie zadania chrząszcza blokuje linię komend

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... 

Jak widać, wszystko co robię jest prowadzony "compass" zadanie, to zakończy się pomyślnie.

Punkt wstawienia miga po części tekstowej Waiting..., ale wejście klawiatury nie działa.

Moja konfiguracja grunt

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'); 

}; 

Odpowiedz

20

havn't używane grunt zegarek, jednak uważam, że problemem jest to, że jest to proces ciągły bieg, i domyślnie linia poleceń zazwyczaj uruchomić jeden proces naraz . Dostępne są 3 rozwiązania.

  1. Otwórz nowy terminal. Możesz mieć wiele otwartych na raz, a to pozwoli ci użyć drugiego jako głównego terminala, podczas gdy zegarek z gazetami zajmie się drugim.
  2. Użyj symbolu & w swoim poleceniu. Rozpocznie to proces i natychmiast zwróci Ci linię poleceń, pozwalając ci jej używać do innych rzeczy. Możesz myśleć o tym, jak uruchamiać polecenie w tle. Proces jest nadal podłączony do okna terminala, więc zamknięcie okna zakończy proces.

    grunt w &

  3. użytkowania (&) wokół swojej komendy. To będzie działać w tle tak samo jak tylko &, jednak proces nie zostanie zabity po zamknięciu okna terminala.

    (grunt w &)

+0

Wierzę, że rozwiąże to twój problem, ale jeśli źle zrozumiałem twoje pytanie, przepraszam. –

+0

'&' nie działa. Jednak otwieranie nowego terminala działa. Czy jest gdzieś dokumentacja? Jak wpadłeś na "" i "' i '(grunt w &)'? –

+0

Przykro mi, że & są * nix oparte, i jakoś nie zauważyłem okien C:/imposing. Ten link może wskazywać właściwy kierunek replikowania tego zachowania w systemie Windows. http://www.tomshardware.com/forum/34598-45-windows-command-background-unix. Jeśli zajrzysz do połowy strony, wspomniano o poleceniu 'start', które wygląda na to, że zadziała, ale nie jestem pewien. –

5

Dla Windows użyj

start grunt 

To przyniesie okno CMD, które będą "pod obserwacją" w tle i pozostawić git-bash lub okno cmd, w którym pracowałeś w taki sam sposób, w jaki go zostawiłeś.

Innymi słowy, uruchomi to zadanie w oddzielnym oknie cmd.

Chciałem tylko, aby ludzie wiedzieli, że to działało na podstawie komentarzy.

5

Uważam to prostsze po prostu zatrzymać proces oglądania przez naciśnięcie klawiszy Ctrl i C w tym samym czasie. Następnie mogę użyć wiersza poleceń, aby zrobić rzeczy, a następnie uruchomić grunt zegarek, kiedy jestem gotowy, aby wrócić do przeglądarki.

Powiązane problemy