Конфігурація активів
Огляд опцій конфігурації для Nette Assets.
assets:
# base path for resolving relative mapper paths
basePath: ... # (string) defaults to %wwwDir%
# base URL for resolving relative mapper URLs
baseUrl: ... # (string) defaults to %baseUrl%
# enable asset versioning globally?
versioning: ... # (bool) defaults to true
# defines asset mappers
mapping: ... # (array) defaults to path 'assets'
basePath
встановлює типовий каталог файлової системи для
розв'язання відносних шляхів у маперах. За замовчуванням він
використовує веб-каталог (%wwwDir%
).
baseUrl
встановлює типовий префікс URL для розв'язання відносних URL
у маперах. За замовчуванням він використовує кореневий URL
(%baseUrl%
).
Опція versioning
глобально контролює, чи додаються параметри
версії до URL-адрес активів для обходу кешу. Окремі мапери можуть
перевизначати це налаштування.
Мапери
Мапери можуть бути налаштовані трьома способами: проста рядкова нотація, детальна масивна нотація або як посилання на сервіс.
Найпростіший спосіб визначити мапер:
assets:
mapping:
default: assets # Creates filesystem mapper for %wwwDir%/assets/
images: img # Creates filesystem mapper for %wwwDir%/img/
scripts: js # Creates filesystem mapper for %wwwDir%/js/
Кожен мапер створює FilesystemMapper
, який:
- Шукає файли в
%wwwDir%/<path>
- Генерує URL-адреси, такі як
%baseUrl%/<path>
- Успадковує глобальні налаштування версіонування
Для більшого контролю використовуйте детальну нотацію:
assets:
mapping:
images:
# directory where files are stored
path: ... # (string) optional, defaults to ''
# URL prefix for generated links
url: ... # (string) optional, defaults to path
# enable versioning for this mapper?
versioning: ... # (bool) optional, inherits global setting
# auto-add extension(s) when searching for files
extension: ... # (string|array) optional, defaults to null
Розуміння того, як розв'язуються значення конфігурації:
- Розв'язання шляхів
- Відносні шляхи розв'язуються з
basePath
(або%wwwDir%
, якщоbasePath
не встановлено) - Абсолютні шляхи використовуються як є
- Розв'язання URL
- Відносні URL-адреси розв'язуються з
baseUrl
(або%baseUrl%
, якщоbaseUrl
не встановлено) - Абсолютні URL-адреси (зі схемою або
//
) використовуються як є - Якщо
url
не вказано, використовується значенняpath
assets:
basePath: /var/www/project/www
baseUrl: https://example.com/assets
mapping:
# Relative path and URL
images:
path: img # Resolved to: /var/www/project/www/img
url: images # Resolved to: https://example.com/assets/images
# Absolute path and URL
uploads:
path: /var/shared/uploads # Used as-is: /var/shared/uploads
url: https://cdn.example.com # Used as-is: https://cdn.example.com
# Only path specified
styles:
path: css # Path: /var/www/project/www/css
# URL: https://example.com/assets/css
Користувацькі мапери
Для користувацьких маперів посилайтеся або визначте сервіс:
services:
s3mapper: App\Assets\S3Mapper(%s3.bucket%)
assets:
mapping:
cloud: @s3mapper
database: App\Assets\DatabaseMapper(@database.connection)
Vite Mapper
Мапер Vite вимагає лише додати type: vite
. Це повний список опцій
конфігурації:
assets:
mapping:
default:
# mapper type (required for Vite)
type: vite # (string) required, must be 'vite'
# Vite build output directory
path: ... # (string) optional, defaults to ''
# URL prefix for built assets
url: ... # (string) optional, defaults to path
# location of Vite manifest file
manifest: ... # (string) optional, defaults to <path>/.vite/manifest.json
# Vite dev server configuration
devServer: ... # (bool|string) optional, defaults to true
# versioning for public directory files
versioning: ... # (bool) optional, inherits global setting
# auto-extension for public directory files
extension: ... # (string|array) optional, defaults to null
Опція devServer
контролює, як активи завантажуються під час
розробки:
true
(за замовчуванням) – Автоматично виявляє dev-сервер Vite на поточному хості та порту. Якщо dev-сервер запущений і ваш додаток знаходиться в режимі налагодження, активи завантажуються з нього з підтримкою гарячої заміни модулів. Якщо dev-сервер не запущений, активи завантажуються з збудованих файлів у публічному каталозі.false
– Повністю вимикає інтеграцію dev-сервера. Активи завжди завантажуються з збудованих файлів.- Користувацький URL (наприклад,
https://localhost:5173
) – Вручну вказує URL dev-сервера, включаючи протокол та порт. Корисно, коли dev-сервер працює на іншому хості або порту.
Опції versioning
та extension
застосовуються лише до файлів у
публічному каталозі Vite, які не обробляються Vite.
Ручна конфігурація
Якщо не використовуєте Nette DI, налаштуйте мапери вручну:
use Nette\Assets\Registry;
use Nette\Assets\FilesystemMapper;
use Nette\Assets\ViteMapper;
$registry = new Registry;
// Add filesystem mapper
$registry->addMapper('images', new FilesystemMapper(
baseUrl: 'https://example.com/img',
basePath: __DIR__ . '/www/img',
extensions: ['webp', 'jpg', 'png'],
versioning: true,
));
// Add Vite mapper
$registry->addMapper('app', new ViteMapper(
baseUrl: '/build',
basePath: __DIR__ . '/www/build',
manifestPath: __DIR__ . '/www/build/.vite/manifest.json',
devServer: 'https://localhost:5173',
));