Перейти к содержимому

Сервер статических файлов

serveStatic — это middleware, позволяющий отправлять статические файлы из указанной директории.

import { serveStatic } from '@shelepuginivan/lunatic'
import { join } from 'path'
const staticDir = join(__dirname, 'static')
app.use('/static', serveStatic(staticDir))
app.listen(8000)

В этом примере все запросы к /static и /static/* будут обрабатываться serveStatic. Он отправит файл следующим образом:

  • Путь запроса /static/style.css -> Файл <staticDir>/style.css.
  • Путь запроса /static/images/d430849b.png -> Файл <staticDir>/images/d430849b.png

и т.д.

Если запрашиваемый файл не существует, то в ответ будет иметь статус 404 Not Found.

serveStatic — это конфигурируемый middleware, что означает, что оно принимает объект options с настройками:

import { serveStatic, ServeStaticOptions } from '@shelepuginivan/lunatic'
import { join } from 'path'
const serveStaticOptions: ServeStaticOptions = {
dotfiles: 'forbid',
index: 'index.html',
lastModified: false,
}
app.use('/static', serveStatic(join(__dirname, 'static'), serveStaticOptions))
app.listen(8000)

Опции конфигурации

dotfiles

Как сервер должен реагировать, когда клиент пытается получить доступ к файлам, начинающимся с точки (например, .htaccess).

Принимает одну из следующих строк:

  • 'allow' — отвечает статусом 200 OK и отправляет файл
  • 'forbid' — отвечает статусом 403 Forbidden и не отправляет файл
  • 'ignore' — отвечаем статусом 404 Not Found и не отправляет файл, т.е. делает вид, что файла не существует.

По умолчанию: 'ignore'.

etag

Включать ли заголовок ETag . Принимает значение типа boolean.

По умолчанию: true

index

Как сервер должен отвечать, когда клиент пытается получить доступ к каталогу.

  • Установите значение string для отправки определенного имени файла.
  • Установите значение false, чтобы отключить эту функцию. Сервер будет отвечать статусом 404 Not Found.

По умолчанию: 'index.html'.

lastModified

Включать ли заголовок Last-Modified. Принимает значение типа boolean.

По умолчанию: true