Assets Yapılandırması
Nette Assets için yapılandırma seçeneklerine genel bakış.
assets:
# göreli mapper yollarını çözmek için temel yol
basePath: ... # (string) varsayılan %wwwDir%
# göreli mapper URL'lerini çözmek için temel URL
baseUrl: ... # (string) varsayılan %baseUrl%
# varlık sürümlemesi küresel olarak etkinleştirilsin mi?
versioning: ... # (bool) varsayılan true
# varlık mapper'larını tanımlar
mapping: ... # (array) varsayılan 'assets' yolu
basePath, mapper'lardaki göreli yolları çözmek için varsayılan dosya sistemi dizinini belirler. Varsayılan
olarak web dizinini (%wwwDir%) kullanır.
baseUrl, mapper'lardaki göreli URL'leri çözmek için varsayılan URL önekini belirler. Varsayılan olarak kök
URL'yi (%baseUrl%) kullanır.
versioning seçeneği, önbellek geçersizleştirme için varlık URL'lerine sürüm parametreleri eklenip
eklenmeyeceğini küresel olarak denetler. Tek tek mapper'lar bu ayarı geçersiz kılabilir.
Mapper'lar
Mapper'lar üç şekilde yapılandırılabilir: basit dize yazımı, ayrıntılı dizi yazımı ya da bir servis olarak
(ClassName(...) veya @serviceName() varlık yazımıyla).
Bir mapper tanımlamanın en basit yolu:
assets:
mapping:
default: assets # %wwwDir%/assets/ için dosya sistemi mapper'ı oluşturur
images: img # %wwwDir%/img/ için dosya sistemi mapper'ı oluşturur
scripts: js # %wwwDir%/js/ için dosya sistemi mapper'ı oluşturur
Her mapper şunları yapan bir FilesystemMapper oluşturur:
- Dosyaları
%wwwDir%/<path>içinde arar %baseUrl%/<path>gibi URL'ler üretir- Küresel sürümleme ayarını kalıtır
Daha fazla denetim için ayrıntılı yazımı kullanın:
assets:
mapping:
images:
# dosyaların saklandığı dizin
path: ... # (string) isteğe bağlı, varsayılan temel yol (basePath)
# üretilen bağlantılar için URL öneki
url: ... # (string) isteğe bağlı, varsayılan path
# bu mapper için sürümleme etkinleştirilsin mi?
versioning: ... # (bool) isteğe bağlı, küresel ayarı kalıtır
# dosyaları ararken uzantı(lar) otomatik eklensin
extension: ... # (string|array) isteğe bağlı, varsayılan null
Yapılandırma değerlerinin nasıl çözüldüğünü anlamak:
- Yol çözümü
- Göreli yollar
basePathdeğerinden çözülür (basePathayarlanmamışsa%wwwDir%değerinden) - Mutlak yollar olduğu gibi kullanılır
- URL çözümü
- Göreli URL'ler
baseUrldeğerinden çözülür (baseUrlayarlanmamışsa%baseUrl%değerinden) - Mutlak URL'ler (şemalı ya da
//ile başlayan) olduğu gibi kullanılır (//ile başlayan bir URL şemasınıbaseUrldeğerinden alır) urlbelirtilmemişsepathdeğeri kullanılır
assets:
basePath: /var/www/project/www
baseUrl: https://example.com/assets
mapping:
# Göreli yol ve URL
images:
path: img # Şuna çözülür: /var/www/project/www/img
url: images # Şuna çözülür: https://example.com/assets/images
# Mutlak yol ve URL
uploads:
path: /var/shared/uploads # Olduğu gibi kullanılır: /var/shared/uploads
url: https://cdn.example.com # Olduğu gibi kullanılır: https://cdn.example.com
# Yalnızca path belirtilmiş
styles:
path: css # Yol: /var/www/project/www/css
# URL: https://example.com/assets/css
Özel Mapper'lar
Özel mapper'lar için, var olan bir servise @serviceName ile başvurun ya da onu doğrudan
ClassName(arguments) veya yalın bir sınıf adıyla tanımlayın:
services:
s3mapper: App\Assets\S3Mapper(%s3.bucket%)
assets:
mapping:
cloud: @s3mapper
database: App\Assets\DatabaseMapper(@database.connection)
Vite Mapper
Vite mapper yalnızca type: vite eklemenizi gerektirir. Yapılandırma seçeneklerinin tam listesi şudur:
assets:
mapping:
default:
# mapper tipi (Vite için gereklidir)
type: vite # (string) gerekli, 'vite' olmalıdır
# Vite derleme çıktı dizini
path: ... # (string) isteğe bağlı, varsayılan temel yol (basePath)
# derlenmiş varlıklar için URL öneki
url: ... # (string) isteğe bağlı, varsayılan path
# Vite manifest dosyasının konumu
manifest: ... # (string) isteğe bağlı, path'e göreli, varsayılan <path>/.vite/manifest.json
# Vite dev sunucusu yapılandırması
devServer: ... # (bool|string) isteğe bağlı, varsayılan true
# public dizinindeki dosyalar için sürümleme
versioning: ... # (bool) isteğe bağlı, küresel ayarı kalıtır
# public dizinindeki dosyalar için otomatik uzantı
extension: ... # (string|array) isteğe bağlı, varsayılan null
devServer seçeneği, varlıkların geliştirme sırasında nasıl yükleneceğini denetler:
true(varsayılan) – Çalışan bir Vite dev sunucusunu otomatik algılar (Nette Vite eklentisinin derleme dizininde oluşturduğu.vite/nette.jsondosyası aracılığıyla). Dev sunucusu çalışıyorsa ve uygulamanız hata ayıklama kipindeyse, varlıklar hot module replacement desteğiyle ondan yüklenir. Dev sunucusu çalışmıyorsa, varlıklar public dizinindeki derlenmiş dosyalardan yüklenir.false– Dev sunucusu entegrasyonunu tümüyle kapatır. Varlıklar her zaman derlenmiş dosyalardan yüklenir.- Özel URL (örneğin
https://localhost:5173) – Dev sunucusu URL'sini protokol ve port dahil elle belirtin. Dev sunucusu farklı bir host ya da portta çalışıyorsa yararlıdır. Otomatik algılamada olduğu gibi yalnızca hata ayıklama kipinde geçerlidir; üretimde her zaman derlenmiş dosyalar kullanılır.
versioning ve extension seçenekleri yalnızca Vite'ın public dizinindeki, Vite tarafından
işlenmeyen dosyalar için geçerlidir.
Elle Yapılandırma
Nette DI kullanmıyorsanız mapper'ları elle yapılandırın:
use Nette\Assets\Registry;
use Nette\Assets\FilesystemMapper;
use Nette\Assets\ViteMapper;
$registry = new Registry;
// Dosya sistemi mapper'ı ekle
$registry->addMapper('images', new FilesystemMapper(
baseUrl: 'https://example.com/img',
basePath: __DIR__ . '/www/img',
extensions: ['webp', 'jpg', 'png'],
versioning: true,
));
// Vite mapper ekle
$registry->addMapper('app', new ViteMapper(
baseUrl: '/build',
basePath: __DIR__ . '/www/build',
manifestPath: __DIR__ . '/www/build/.vite/manifest.json',
devServer: 'https://localhost:5173',
));
Kayıtlı herhangi bir mapper'ı getMapper() metoduyla adına göre de alabilirsiniz:
$mapper = $registry->getMapper('images'); // kayıtlı mapper'ı döndürür
$default = $registry->getMapper(); // 'default' mapper'ı döndürür