Konfiguration von Assets
Übersicht der Konfigurationsoptionen für Nette Assets.
assets:
# Basispfad zum Auflösen relativer Pfade der Mapper
basePath: ... # (string) Standardwert ist %wwwDir%
# Basis-URL zum Auflösen relativer URLs der Mapper
baseUrl: ... # (string) Standardwert ist %baseUrl%
# Versionierung der Assets global aktivieren?
versioning: ... # (bool) Standardwert ist true
# definiert die Asset-Mapper
mapping: ... # (array) Standardwert ist der Pfad 'assets'
basePath setzt das Standardverzeichnis im Dateisystem zum Auflösen relativer Pfade in den Mappern.
Standardmäßig wird das Web-Verzeichnis verwendet (%wwwDir%).
baseUrl setzt das Standard-URL-Präfix zum Auflösen relativer URLs in den Mappern. Standardmäßig wird die
Wurzel-URL verwendet (%baseUrl%).
Die Option versioning steuert global, ob den URLs der Assets Versionsparameter fürs Cache Busting angehängt
werden. Einzelne Mapper können diese Einstellung überschreiben.
Mapper
Mapper lassen sich auf drei Arten konfigurieren: in einfacher String-Schreibweise, in ausführlicher Array-Schreibweise oder
als Service (mit der Entity-Schreibweise ClassName(...) bzw. @serviceName()).
Der einfachste Weg, einen Mapper zu definieren:
assets:
mapping:
default: assets # erzeugt einen Filesystem-Mapper für %wwwDir%/assets/
images: img # erzeugt einen Filesystem-Mapper für %wwwDir%/img/
scripts: js # erzeugt einen Filesystem-Mapper für %wwwDir%/js/
Jeder Mapper erzeugt einen FilesystemMapper, der:
- Dateien in
%wwwDir%/<path>sucht - URLs der Form
%baseUrl%/<path>erzeugt - die globale Einstellung zur Versionierung erbt
Für mehr Kontrolle verwenden Sie die ausführliche Schreibweise:
assets:
mapping:
images:
# Verzeichnis, in dem die Dateien liegen
path: ... # (string) optional, Standardwert ist der Basispfad (basePath)
# URL-Präfix für die erzeugten Links
url: ... # (string) optional, Standardwert ist path
# Versionierung für diesen Mapper aktivieren?
versioning: ... # (bool) optional, erbt die globale Einstellung
# Endung(en) beim Suchen von Dateien automatisch ergänzen
extension: ... # (string|array) optional, Standardwert ist null
So werden die Konfigurationswerte aufgelöst:
- Auflösung der Pfade
- Relative Pfade werden von
basePathaus aufgelöst (oder von%wwwDir%, wennbasePathnicht gesetzt ist) - Absolute Pfade werden unverändert verwendet
- Auflösung der URLs
- Relative URLs werden von
baseUrlaus aufgelöst (oder von%baseUrl%, wennbaseUrlnicht gesetzt ist) - Absolute URLs (mit Schema oder
//) werden unverändert verwendet (eine//-URL erhält ihr Schema ausbaseUrl) - Ist
urlnicht angegeben, wird der Wert vonpathverwendet
assets:
basePath: /var/www/project/www
baseUrl: https://example.com/assets
mapping:
# relativer Pfad und relative URL
images:
path: img # aufgelöst zu: /var/www/project/www/img
url: images # aufgelöst zu: https://example.com/assets/images
# absoluter Pfad und absolute URL
uploads:
path: /var/shared/uploads # unverändert verwendet: /var/shared/uploads
url: https://cdn.example.com # unverändert verwendet: https://cdn.example.com
# nur der Pfad angegeben
styles:
path: css # Pfad: /var/www/project/www/css
# URL: https://example.com/assets/css
Eigene Mapper
Bei eigenen Mappern verweisen Sie mit @serviceName auf einen bestehenden Service oder definieren ihn direkt über
ClassName(arguments) bzw. einen bloßen Klassennamen:
services:
s3mapper: App\Assets\S3Mapper(%s3.bucket%)
assets:
mapping:
cloud: @s3mapper
database: App\Assets\DatabaseMapper(@database.connection)
Vite-Mapper
Beim Vite-Mapper müssen Sie nur type: vite ergänzen. Das ist die vollständige Liste der
Konfigurationsoptionen:
assets:
mapping:
default:
# Typ des Mappers (bei Vite erforderlich)
type: vite # (string) erforderlich, muss 'vite' sein
# Ausgabeverzeichnis des Vite-Builds
path: ... # (string) optional, Standardwert ist der Basispfad (basePath)
# URL-Präfix für die gebauten Assets
url: ... # (string) optional, Standardwert ist path
# Ort der Manifest-Datei von Vite
manifest: ... # (string) optional, relativ zu path, Standardwert ist <path>/.vite/manifest.json
# Konfiguration des Vite-Dev-Servers
devServer: ... # (bool|string) optional, Standardwert ist true
# Versionierung für Dateien im Public-Verzeichnis
versioning: ... # (bool) optional, erbt die globale Einstellung
# automatische Endung für Dateien im Public-Verzeichnis
extension: ... # (string|array) optional, Standardwert ist null
Die Option devServer steuert, wie die Assets während der Entwicklung geladen werden:
true(Standard) – Erkennt automatisch einen laufenden Vite-Dev-Server (über die Datei.vite/nette.json, die das Nette-Vite-Plugin im Build-Verzeichnis anlegt). Läuft der Dev-Server und ist Ihre Anwendung im Debug-Modus, werden die Assets von ihm geladen, samt Unterstützung für Hot Module Replacement. Läuft der Dev-Server nicht, werden die Assets aus den gebauten Dateien im öffentlichen Verzeichnis geladen.false– Schaltet die Integration des Dev-Servers vollständig ab. Die Assets werden immer aus den gebauten Dateien geladen.- Eigene URL (z. B.
https://localhost:5173) – Gibt die URL des Dev-Servers samt Protokoll und Port von Hand an. Nützlich, wenn der Dev-Server auf einem anderen Host oder Port läuft. Wie die automatische Erkennung gilt sie nur im Debug-Modus; in der Produktion werden immer die gebauten Dateien verwendet.
Die Optionen versioning und extension gelten nur für Dateien im Public-Verzeichnis von Vite, die von
Vite nicht verarbeitet werden.
Manuelle Konfiguration
Wenn Sie Nette DI nicht verwenden, konfigurieren Sie die Mapper von Hand:
use Nette\Assets\Registry;
use Nette\Assets\FilesystemMapper;
use Nette\Assets\ViteMapper;
$registry = new Registry;
// Filesystem-Mapper hinzufügen
$registry->addMapper('images', new FilesystemMapper(
baseUrl: 'https://example.com/img',
basePath: __DIR__ . '/www/img',
extensions: ['webp', 'jpg', 'png'],
versioning: true,
));
// Vite-Mapper hinzufügen
$registry->addMapper('app', new ViteMapper(
baseUrl: '/build',
basePath: __DIR__ . '/www/build',
manifestPath: __DIR__ . '/www/build/.vite/manifest.json',
devServer: 'https://localhost:5173',
));
Jeden registrierten Mapper können Sie außerdem mit der Methode getMapper() über seinen Namen holen:
$mapper = $registry->getMapper('images'); // gibt den registrierten Mapper zurück
$default = $registry->getMapper(); // gibt den Mapper 'default' zurück