Grunt watch задайте блок командной строки

Я новичок в хрюканье, все еще учась, поэтому я подошел к очень странной проблеме. Когда я запускаю задачу "watch", моя командная строка блокируется, поэтому в основном я не могу что-либо сделать. Не забывайте, что задача завершена с успехом. Это мой вывод командной строки:

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

Как вы можете видеть, все, что я делаю, это запустить задачу "compass", она завершается успешно.

Точка вставки продолжает мигать после текстовой части Waiting..., но ввод с клавиатуры не работает.

Конфигурация моего 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');

};

Ответ 1

Я не использовал часы grunt, однако я считаю, что проблема в том, что это непрерывный процесс, и по умолчанию ваша командная строка будет обычно запускать один процесс за раз. Есть 3 решения, которые вы можете использовать.

  • Откройте новый терминал. У вас может быть несколько открываемых одновременно, и это позволит вам использовать второй в качестве основного терминала, в то время как секундомер будет занимать другой.
  • Используйте символ и в своей команде. Это запустит процесс и немедленно вернет вам командную строку, что позволит вам использовать ее для других целей. Вы можете думать об этом как о запуске команды в фоновом режиме. Процесс все еще подключен к терминальному окну, поэтому, если вы закроете окно, процесс завершится.

    grunt w &

  • Используйте (&) вокруг своей команды. Это будет работать в фоновом режиме так же, как и просто, но процесс не будет убит при закрытии окна терминала.

    (grunt w &)

Ответ 2

Для Windows используйте

start grunt

Это приведет к появлению окна CMD, которое будет "смотреть" в фоновом режиме и оставить окно git - bash или cmd, в котором вы работали, так же, как вы его оставили.

Другими словами, это запустит задачу в отдельном окне cmd для вас.

Просто хотел, чтобы люди знали, что это сработало в комментариях.

Ответ 3

Мне проще просто остановить процесс просмотра, одновременно нажав Ctrl и c. Затем я могу использовать командную строку, а затем делать что-то, а затем снова запускать grunt watch, когда Im готов вернуться к браузеру.

Ответ 4

Помимо терминальных решений, предложенных компанией @Nick, было бы неплохо иметь интегрированные решения Node.

У этого был WONTFIX из grunt-contib-watch https://github.com/gruntjs/grunt-contrib-watch/issues/340 и grung-bg-shell https://github.com/rma4ok/grunt-bg-shell/issues/14.

Предлагаемые альтернативы:

Ответ 5

Я использую экран, https://www.gnu.org/software/screen/, поэтому я могу переключаться между окнами терминала.