Команда server
используется для запуска dev-сервера. Этот сервер по сути является обычным http-сервером, но имеет ряд дополнительных функций для оптимизации процесса разработки.
Опция задает базовый путь для сервера. По сути, этот путь является корнем сервера. Сервер может отдавать файлы только из указанной папки.
Путь можно задать в конфиге (basis.config
) или командной строке. Если это не сделано, то базовым путем становится папка расположения конфига. Если такой файл не найден, то базовым путем становится путь с которого вызвана команда basis server
.
Данная опция позволяет определить порт для запускаемого сервера. По умолчанию сервер запускается на порту 8000
.
> basis server -p 8001
Server run at http://localhost:8001
Если указана данная опция, то сервер выводит подробный лог действий. Опция полезна для отладки.
По умолчанию лог действий сервера раскрашивает для лучшей читаемости. Это происходит только там, где поддерживаются ansi
коды, главным образом при выводе в терминале или консоли (tty
). Поддержка определяется автоматически. Опция --no-color
позволяет принудительно запретить использовать цвета.
Сервер может открывать заданный файл в редакторе. Это осуществляется путем выполнения
Запрет кеширования. Сокращение для --no-read-cache --no-res-cache
. Следующие команды эквивалентны:
basis server --no-cache
basis server --no-read-cache --no-res-cache
Запрет использования кеша файлов. Если указана опция, то файл читается каждый раз при обращении к нему. Без нее, если файл был прочитан сервером ранее, то файл читается заново, только если он изменился со времени последнего обращения к нему.
Запрет на добавление файлов в кеш ресурсов.
Опция указывает серверу на старте проиндексировать (положить в кеш) все файлы в указанной папке. В кеш добавляются все файлы с расширениями .css
, .tmpl
, .json
, .js
и .l10n
.
Сервер автоматически проверяет изменились ли закешированные файлы. Такая задача обычно называется watch
. Данная опция позволяет отключить это поведение, что может быть удобно если сервер используется как сервер статики.
На данный момент есть несколько настроек, которые можно указать только в конфиге (файл basis.config
).
Сервер умеет преобразовывать запросы к нему. Это может использоваться для редиректа или для проксирования к другим серверам. Для этого описываются правила преобразований.
Правила описываются в виде объекта, например:
{
"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=1
→https://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]"
}
}
}
Позволяет задать список путей, которые не нужно кешировать или индексировать.
{
"server": {
"ignore": [
"test"
]
}
}
comming soon