Configurazione di Assets
Panoramica delle opzioni di configurazione di Nette Assets.
assets:
# percorso base per risolvere i percorsi relativi dei mapper
basePath: ... # (string) predefinito %wwwDir%
# URL base per risolvere gli URL relativi dei mapper
baseUrl: ... # (string) predefinito %baseUrl%
# attivare globalmente il versionamento degli asset?
versioning: ... # (bool) predefinito true
# definisce i mapper degli asset
mapping: ... # (array) predefinito il percorso 'assets'
basePath imposta la directory predefinita del filesystem per risolvere i percorsi relativi nei mapper. Per
impostazione predefinita usa la directory web (%wwwDir%).
baseUrl imposta il prefisso URL predefinito per risolvere gli URL relativi nei mapper. Per impostazione
predefinita usa l'URL radice (%baseUrl%).
L'opzione versioning governa globalmente se agli URL degli asset vengano aggiunti i parametri di versione per
invalidare la cache. I singoli mapper possono sovrascrivere questa impostazione.
Mapper
I mapper si possono configurare in tre modi: con la semplice notazione a stringa, con la notazione dettagliata ad array,
oppure come servizio (usando la notazione a entità ClassName(...) oppure @serviceName()).
Il modo più semplice di definire un mapper:
assets:
mapping:
default: assets # crea un mapper del filesystem per %wwwDir%/assets/
images: img # crea un mapper del filesystem per %wwwDir%/img/
scripts: js # crea un mapper del filesystem per %wwwDir%/js/
Ogni mapper crea un FilesystemMapper che:
- cerca i file in
%wwwDir%/<path> - genera URL del tipo
%baseUrl%/<path> - eredita l'impostazione globale del versionamento
Per un controllo maggiore usate la notazione dettagliata:
assets:
mapping:
images:
# directory in cui sono salvati i file
path: ... # (string) facoltativo, predefinito il percorso base (basePath)
# prefisso URL per i link generati
url: ... # (string) facoltativo, predefinito il valore di path
# attivare il versionamento per questo mapper?
versioning: ... # (bool) facoltativo, eredita l'impostazione globale
# aggiunge automaticamente l'estensione (o le estensioni) quando cerca i file
extension: ... # (string|array) facoltativo, predefinito null
Come vengono risolti i valori di configurazione:
- Risoluzione del percorso
- I percorsi relativi vengono risolti a partire da
basePath(oppure da%wwwDir%sebasePathnon è impostato) - I percorsi assoluti vengono usati così come sono
- Risoluzione dell'URL
- Gli URL relativi vengono risolti a partire da
baseUrl(oppure da%baseUrl%sebaseUrlnon è impostato) - Gli URL assoluti (con schema oppure
//) vengono usati così come sono (un URL//prende lo schema dabaseUrl) - Se
urlnon è indicato, viene usato il valore dipath
assets:
basePath: /var/www/project/www
baseUrl: https://example.com/assets
mapping:
# percorso e URL relativi
images:
path: img # risolto in: /var/www/project/www/img
url: images # risolto in: https://example.com/assets/images
# percorso e URL assoluti
uploads:
path: /var/shared/uploads # usato così: /var/shared/uploads
url: https://cdn.example.com # usato così: https://cdn.example.com
# indicato solo il percorso
styles:
path: css # percorso: /var/www/project/www/css
# URL: https://example.com/assets/css
Mapper personalizzati
Per i mapper personalizzati fate riferimento a un servizio esistente con @serviceName, oppure definiteli
direttamente con ClassName(argomenti) o con il semplice nome della classe:
services:
s3mapper: App\Assets\S3Mapper(%s3.bucket%)
assets:
mapping:
cloud: @s3mapper
database: App\Assets\DatabaseMapper(@database.connection)
Mapper Vite
Il mapper Vite richiede solo che aggiungiate type: vite. Questo è l'elenco completo delle opzioni di
configurazione:
assets:
mapping:
default:
# tipo di mapper (obbligatorio per Vite)
type: vite # (string) obbligatorio, deve essere 'vite'
# directory di output della build di Vite
path: ... # (string) facoltativo, predefinito il percorso base (basePath)
# prefisso URL per gli asset compilati
url: ... # (string) facoltativo, predefinito il valore di path
# posizione del file manifest di Vite
manifest: ... # (string) facoltativo, relativo a path, predefinito <path>/.vite/manifest.json
# configurazione del dev server di Vite
devServer: ... # (bool|string) facoltativo, predefinito true
# versionamento per i file della directory public
versioning: ... # (bool) facoltativo, eredita l'impostazione globale
# estensione automatica per i file della directory public
extension: ... # (string|array) facoltativo, predefinito null
L'opzione devServer governa come vengono caricati gli asset durante lo sviluppo:
true(predefinito) – rileva automaticamente un dev server di Vite in esecuzione (tramite il file.vite/nette.jsonche il plugin Vite di Nette crea nella directory di build). Se il dev server è in esecuzione e la vostra applicazione è in modalità debug, gli asset vengono caricati da esso con il supporto all'hot module replacement. Se il dev server non è in esecuzione, gli asset vengono caricati dai file compilati nella directory pubblica.false– disattiva completamente l'integrazione con il dev server. Gli asset vengono sempre caricati dai file compilati.- URL personalizzato (per esempio
https://localhost:5173) – indicate a mano l'URL del dev server, protocollo e porta compresi. Torna utile quando il dev server gira su un host o una porta diversi. Come il rilevamento automatico, vale solo in modalità debug; in produzione si usano sempre i file compilati.
Le opzioni versioning ed extension valgono solo per i file della directory public di Vite che non
vengono elaborati da Vite.
Configurazione manuale
Quando non usate Nette DI, configurate i mapper a mano:
use Nette\Assets\Registry;
use Nette\Assets\FilesystemMapper;
use Nette\Assets\ViteMapper;
$registry = new Registry;
// aggiunta del mapper del filesystem
$registry->addMapper('images', new FilesystemMapper(
baseUrl: 'https://example.com/img',
basePath: __DIR__ . '/www/img',
extensions: ['webp', 'jpg', 'png'],
versioning: true,
));
// aggiunta del mapper Vite
$registry->addMapper('app', new ViteMapper(
baseUrl: '/build',
basePath: __DIR__ . '/www/build',
manifestPath: __DIR__ . '/www/build/.vite/manifest.json',
devServer: 'https://localhost:5173',
));
Potete anche ottenere qualsiasi mapper registrato in base al nome con il metodo getMapper():
$mapper = $registry->getMapper('images'); // restituisce il mapper registrato
$default = $registry->getMapper(); // restituisce il mapper 'default'