Какова цель задачи сервера gruntjs?

Я изучаю, как продвигать использование gruntjs. Я нашел серверную задачу, но я не могу понять.

Могу ли я использовать сопоставленные/минированные файлы сопоставления задач сервера для тестирования моего приложения (использует backbone.js) без перемещения или размещения исходных файлов в корневом веб-сервере? Например, без apache.

Если нет, то, что предполагаемое использование серверной задачи?

Ответ 1

Задача server используется для запуска статического сервера с пустом base, установленным в качестве веб-корня.

Пример: Подавать ./web-root как http://localhost:8080/:

grunt.initConfig({
  server: {
    port: 8080,
    base: './web-root'
  }
});

Он будет функционировать аналогично серверу Apache, обслуживая статические файлы на основе их пути, но используя http module через connect, чтобы настроить его (source).

Если вам нужно, чтобы он обслуживал больше, чем просто статические файлы, вам нужно будет рассмотреть определение пользовательской задачи 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.


Изменить

Если вы хотите, чтобы он некоторое время сохранял сервер (а также grunt), вы могли определить задачу как асинхронную (с сервер '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);
});

Ответ 2

Задачей server является задача connect и она включена в пакет grunt-contrib-connect.

Задача connect запускает веб-сервер подключения.

Установите этот плагин с помощью этой команды:

npm install grunt-contrib-connect --save-dev

Примечание: --save-dev включает пакет в devDependencies, см. https://npmjs.org/doc/install.html

Как только плагин был установлен, он может быть включен внутри вашего файла Grunt с этой строкой JavaScript:

grunt.loadNpmTasks('grunt-contrib-connect');

Запустите эту задачу с помощью команды grunt connect.

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

В этом примере grunt connect (или более подробно, grunt connect:server) запустит статический веб-сервер в http://localhost:9001/, а его базовый путь будет установлен в каталог www-root относительно файла Grunt, а любые запущенные задачи после этого сможет получить к нему доступ.

// Project configuration.
grunt.initConfig({
  connect: {
    server: {
      options: {
        port: 9001,
        base: 'www-root'
      }
    }
  }
});

Ответ 3

Точкой задачи сервера является быстрый и грязный доступ к статическим файлам для тестирования. grunt server НЕ является средой производственного сервера. Он действительно должен использоваться только во время жизненного цикла grunt, чтобы получить компоненты статического тестирования в тестовую среду. Используйте полноценный сервер, возможно, управляемый сценариями жизненного цикла NPM, для производственных сред.