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/, поэтому я могу переключаться между окнами терминала.