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 basePath değerinden çözülür (basePath ayarlanmamışsa %wwwDir% değerinden)
Mutlak yollar olduğu gibi kullanılır
URL çözümü
Göreli URL'ler baseUrl değerinden çözülür (baseUrl ayarlanmamış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ı baseUrl değerinden alır)
url belirtilmemişse path değ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.json dosyası 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
versiyon: 1.x