Какова цель задачи сервера 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, для рабочих сред.

Другие вопросы по тегам