1

К сожалению, grunt-contrib-watch и grunt-contrib-connect не выглядят хорошо.Grunt-contrib-watch with grunt-contrib-connect

На хрюкать-вно-подключения readme он говорит:

Обратите внимание, что этот сервер работает только до тех пор, как ворчание работает. По завершении задания grunt веб-сервер останавливается. Это поведение можно изменить с помощью параметра keepalive и активировать ad-hoc, выполнив задачу, например grunt connect :: keepalive.

Изобразительное. Но что, если я хочу запустить свою задачу наблюдения в тандеме с сервером подключения? Как так:

connect: { 
    server: { 
    options: { 
     port: 8000, 
     hostname: 'localhost', 
     keepalive: true 
    } 
    } 
}, 
watch: { 
    options: { 
    livereload: true 
    }, 
    files: ['**'], 
    tasks: ['connect'], 
} 

Здесь connect задание выполняется, когда файл был изменен. Если я установил опцию подключения keepalive в true, то функция grunt-contrib-watch перестает смотреть, потому что технически не закончил свою задачу. Если я фальсифицирую опцию keepalive, тогда сервер подключается после завершения задач.

Да, я мог бы выполнить команды ...

$ grunt connect 
$ grunt watch 

... в отдельных оболочках, но не существует никакого способа запускать их с помощью одной команды?

ответ

0

Я использую grunt-nodemon, который инкапсулирует часы и nodejs гранатомет в одной задаче:

nodemon: { 
    dev: { 
    script: 'app.js', 
    options: { 
     ignore: [ 
     'node_modules/**', 
     'public/**' 
     ], 
     ext: 'js' 
    } 
    } 
} 

Затем выполняется с:

$ grunt nodemon:dev 

Теперь, nodemon только запускает скрипт с app.js nodejs , так что вам понадобится небольшое приложение app.js для загрузки статического статического экспресс-сервера:

var express = require('express'); 
var server = express(); // better instead 
server.configure(function(){ 
    server.use(express.static(__dirname + '/public')); 
}); 

server.listen(3000); 
2

LiveReload в хрюкать-вно-часы сообщает для изменений в файлах в порту здесь ниже вы можете увидеть это на 35729.

С другой стороны, LiveReload в хрюкать-вно-подключения прослушивает изменения в порт 35729.

Таким образом, мы должны должны настроить их как -

connect: { 
    server: { 
    options: { 
     port: 8000, 
     hostname: 'localhost', 
     livereload: 35729 
    } 
    } 
}, 
watch: { 
    options: { 
    livereload: 35729 
    }, 
    files: ['**'], 
    tasks: [] 
} 

Вам не нужно предоставлять «подключить» как задача здесь. Поскольку работа по перегрузке осуществляется здесь с помощью загрузки. Теперь, чтобы сделать эти две работы с одной командой мы зарегистрируем их -

grunt.registerTask("server", ["connect", "watch"]); 

Теперь подключения запускается, а затем смотреть запускается. Теперь нормально registerTasks работает, заканчивая первую задачу, затем вторую задачу и так далее.Но из-за поведения Connect, как указано Вами -

Обратите внимание, что этот сервер работает только до тех пор, как ворчание работает

Connect запускается только один раз. Но часы будут продолжать работать, ища изменения (сохраняя ворчание) и тем самым поддерживая сервер подключений.

Теперь, когда вы пытаетесь

grunt server 

все будет работать как шарм.

 Смежные вопросы

  • Нет связанных вопросов^_^