Какова цель задачи сервера gruntjs?
Я учусь продвигать использование gruntjs. Я нашел задачу сервера, но не могу понять, в чем дело.
Могу ли я использовать сцепленные / минимизированные файлы сопоставления задач сервера для тестирования моего приложения (использует backbone.js) без перемещения или размещения исходных файлов в корне веб-сервера? Без апача например.
Если нет, то как предполагается использовать задачу сервера?
3 ответа
server
Задача используется для запуска статического сервера с base
путь установлен как корень сети.
Пример: Служить ./web-root
как http://localhost:8080/
:
grunt.initConfig({
server: {
port: 8080,
base: './web-root'
}
});
Он будет работать аналогично серверу Apache, обслуживая статические файлы в зависимости от их пути, но для настройки его использует модуль http через соединение ( источник).
Если вам нужно, чтобы он служил не только статическим файлам, тогда вы захотите определить пользовательский server
задача:
grunt.registerTask('server', 'Start a custom web server.', function() {
grunt.log.writeln('Starting web server on port 1234.');
require('./server.js').listen(1234);
});
И пользовательский экземпляр сервера:
// server.js
var http = require('http');
module.exports = http.createServer(function (req, res) {
// ...
});
Могу ли я использовать объединенные / минимизированные файлы сопоставления задач сервера для тестирования моего приложения [...]
Конкатенация и минификация имеют свои собственные специальные задачи - concat
а также min
- но может быть использован вместе с server
задача для выполнения всех 3.
редактировать
Если вы хотите, чтобы он некоторое время сохранял сервер (а также хрюкал), вы можете определить задачу как асинхронную (с 'close'
событие):
grunt.registerTask('server', 'Start a custom web server.', function() {
var done = this.async();
grunt.log.writeln('Starting web server on port 1234.');
require('./server.js').listen(1234).on('close', done);
});
server
задача сейчасconnect
задача, и она включена вgrunt-contrib-connect
пакет.
connect
задача запускает веб-сервер подключения.
Установите этот плагин с помощью этой команды:
npm install grunt-contrib-connect --save-dev
Замечания:
--save-dev
включает в себя пакет в вашемdevDependencies
см. https://npmjs.org/doc/install.html
После того, как плагин установлен, он может быть включен в вашем Gruntfile с помощью этой строки JavaScript:
grunt.loadNpmTasks('grunt-contrib-connect');
Запустите эту задачу с grunt connect
команда.
Обратите внимание, что этот сервер работает только до тех пор, пока работает grunt. После выполнения задач grunt веб-сервер останавливается. Это поведение можно изменить с помощью keepalive
вариант, и может быть включен ad-hoc, запустив задачу, как grunt connect:targetname:keepalive
, targetname
равно "server" в примере кода ниже.
В этом примере grunt connect
(или более многословно, grunt connect:server
) запустит статический веб-сервер в http://localhost:9001/
с его базовым путем, установленным в www-root
директории, относящейся к Gruntfile, и любые последующие задачи смогут получить к ней доступ.
// Project configuration.
grunt.initConfig({
connect: {
server: {
options: {
port: 9001,
base: 'www-root'
}
}
}
});
Суть задачи сервера - иметь быстрый и грязный доступ к статическим файлам для тестирования. Сервер Grunt НЕ является производственной серверной средой. На самом деле его следует использовать только в течение жизненного цикла рабочей нагрузки для передачи ресурсов статического тестирования в среду тестирования. Используйте полноценный сервер, возможно управляемый сценариями жизненного цикла NPM, для рабочих сред.