Skip to content

Latest commit

 

History

History
157 lines (110 loc) · 8.04 KB

server.md

File metadata and controls

157 lines (110 loc) · 8.04 KB

Server

Команда server используется для запуска dev-сервера. Этот сервер по сути является обычным http-сервером, но имеет ряд дополнительных функций для оптимизации процесса разработки.

Общие опции

-b, --base <path>

Опция задает базовый путь для сервера. По сути, этот путь является корнем сервера. Сервер может отдавать файлы только из указанной папки.

Путь можно задать в конфиге (basis.config) или командной строке. Если это не сделано, то базовым путем становится папка расположения конфига. Если такой файл не найден, то базовым путем становится путь с которого вызвана команда basis server.

-p, --port <n>

Данная опция позволяет определить порт для запускаемого сервера. По умолчанию сервер запускается на порту 8000.

> basis server -p 8001
Server run at http://localhost:8001

--verbose

Если указана данная опция, то сервер выводит подробный лог действий. Опция полезна для отладки.

--no-color

По умолчанию лог действий сервера раскрашивает для лучшей читаемости. Это происходит только там, где поддерживаются ansi коды, главным образом при выводе в терминале или консоли (tty). Поддержка определяется автоматически. Опция --no-color позволяет принудительно запретить использовать цвета.

-e, --editor <command>

Сервер может открывать заданный файл в редакторе. Это осуществляется путем выполнения

--no-cache

Запрет кеширования. Сокращение для --no-read-cache --no-res-cache. Следующие команды эквивалентны:

basis server --no-cache
basis server --no-read-cache --no-res-cache

--no-read-cache

Запрет использования кеша файлов. Если указана опция, то файл читается каждый раз при обращении к нему. Без нее, если файл был прочитан сервером ранее, то файл читается заново, только если он изменился со времени последнего обращения к нему.

--no-res-cache

Запрет на добавление файлов в кеш ресурсов.

-i, --index <relpath>

Опция указывает серверу на старте проиндексировать (положить в кеш) все файлы в указанной папке. В кеш добавляются все файлы с расширениями .css, .tmpl, .json, .js и .l10n.

-n, --no-sync

Сервер автоматически проверяет изменились ли закешированные файлы. Такая задача обычно называется watch. Данная опция позволяет отключить это поведение, что может быть удобно если сервер используется как сервер статики.

Дополнительные настройки

На данный момент есть несколько настроек, которые можно указать только в конфиге (файл basis.config).

rewrite

Сервер умеет преобразовывать запросы к нему. Это может использоваться для редиректа или для проксирования к другим серверам. Для этого описываются правила преобразований.

Правила описываются в виде объекта, например:

{
  "server": {
    "rewrite": {
      "^/api/(.*)$": "https://example.com/api/$1 [P, QSA]"
    }
  }
}

Ключом является регулярное выражение в виде строки, которое применяется к определенной части URL. Какую часть нужно проверять указывается в начале и отделяется двоеточием, например, port:1234 или pathname:^/api/(.*)$. Доступные префиксы и их значения на примере, http://localhost:8123/foo/bar?baz=1:

  • host = localhost:8123,
  • port = 8123,
  • hostname = localhost
  • pathname = /foo/bar
  • path = /foo/bar?baz=1
  • href = //localhost:8123/foo/bar?baz=1

Если не указан префикс или указано неверное значение, то используется pathname:. Таким образом, ^/api/(.*)$ и pathname:^/api/(.*)$ являются эквивалентными.

В качестве значения используется строка вида <url> <flags>. В url поддерживаются и относительные, и абсолютные пути (с протоколом http: и https: ). Так же доступны специальные вставки вида $N, где N это группа в регулярном выражении.

Флаги являются опциональными и служат дополнительной инструкцией для сервера, сделаны по аналогии с модулем mod_rewrite в Apache. Они отделяются пробелом и указываются в квадратных скобках через запятую. Доступны флаги:

  • P - запрос должен быть проксирован, сервер делает запрос дальше и возвращает результат;
  • QSA - нужно подставить query (все то что идет после ?) из оригинального адреса в новый;
  • R{code} - код ответа при редиректе (по умолчанию 307)

Примеры:

  • проксировать все запросы начинающиеся с /api/ к https://example.com/api/, например: /api/foo?bar=1https://example.com/api/foo?bar=1
{
  "server": {
    "rewrite": {
      "^/api/(.*)$": "https://example.com/api/$1 [P, QSA]"
    }
  }
}
  • редирект запросов на basisjs.com с кодом 301, если домен example.com
{
  "server": {
    "rewrite": {
      "host:example.com": "http://basisjs.com [R301]"
    }
  }
}

ignore

Позволяет задать список путей, которые не нужно кешировать или индексировать.

{
  "server": {
    "ignore": [
      "test"
    ]
  }
}

plugins

comming soon