· Özgür Vurgun · Angular · 2 min read

15. angular.json

15. angular.json

Bu Dosya Nedir?

angular.json, bir Angular projesinin yapılandırma dosyasıdır. Angular CLI, bu dosyaya bakarak:

  • Projenin nerede başladığını
  • Hangi derleyici ayarlarının kullanılacağını
  • Build, test, lint, serve komutlarında ne yapılacağını
  • Uygulama yollarını, stilleri, scriptleri

gibi yüzlerce detayı öğrenir ve uygular.

Bu dosya olmadan Angular CLI, projeyi nasıl çalıştıracağını bilemez.

angular.json Nerede Bulunur?

Her Angular projesinde, projenin kök dizininde bulunur:

/app
├── src/
├── angular.json
├── package.json
├── tsconfig.json

angular.json’un Genel Yapısı

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "projects": {
    "my-app": {
      ...
    }
  },
  "defaultProject": "my-app"
}

Bu dosya JSON formatında bir yapılandırma ağacıdır.

Temel Alanlar

$schema

  • Hangi şemaya uygun olduğunu belirtir.

  • Kod editörleri (VS Code gibi) otomatik tamamlama ve validasyon sağlar.

version

  • angular.json dosyasının sürümünü belirtir.

  • CLI’nin hangi formatı beklediğini anlaması içindir.

projects

  • Bu bölümde birden fazla uygulama ve kütüphane tanımlanabilir.
  • Genellikle projenin ismiyle başlar.
  • Altında architect adında dev bir yapılandırma alanı bulunur.

projects -> architect -> build

"architect": {
  "build": {
    "builder": "@angular-devkit/build-angular:browser",
    "options": {
      "outputPath": "dist/my-app",
      "index": "src/index.html",
      "main": "src/main.ts",
      "polyfills": "src/polyfills.ts",
      "tsConfig": "tsconfig.app.json",
      "assets": ["src/favicon.ico", "src/assets"],
      "styles": ["src/styles.css"],
      "scripts": []
    },
    ...
  }
}
AlanAçıklama
builderHangi derleyicinin kullanılacağını belirtir
outputPathBuild sonrası çıktı nereye yazılacak
indexAna HTML dosyası
mainGiriş noktası (main.ts)
polyfillsTarayıcı uyumluluğu için gerekli ek dosyalar
tsConfigTypeScript yapılandırma dosyası
assetsKopyalanacak klasör ve dosyalar (ör. resimler)
stylesGlobal stiller
scriptsEk script dosyaları (jQuery gibi manuel JS’ler)

Diğer Architect Komutları

KomutNe işe yarar
serveng serve komutunu tanımlar
testng test (Karma + Jasmine)
lintng lint (ESLint/TSlint)
extract-i18nÇeviri dosyalarını çıkarır
e2eUçtan uca test (protractor/cypress)

configurations -> production

"configurations": {
  "production": {
    "optimization": true,
    "outputHashing": "all",
    "sourceMap": false,
    "namedChunks": false,
    "extractCss": true,
    "budgets": [
      {
        "type": "initial",
        "maximumWarning": "2mb",
        "maximumError": "5mb"
      }
    ]
  }
}

Bu ayarlar, --configuration production parametresi verildiğinde devreye girer.

AlanAçıklama
optimizationKodun minimize edilmesini sağlar
outputHashingCache problemi olmaması için dosya hash’lenir
sourceMapÜretimde kaynak haritası gizlenir
budgetsDosya boyutu limitlerini kontrol eder

Neler Özelleştirilebilir?

  • Kendi build target’larını ekleyebilirsin (my-custom-build)
  • Script/style dosyalarını değiştirebilirsin
  • Çoklu proje (monorepo) desteği için projects alanına ekleme yapabilirsin
  • test, lint gibi komutlara farklı tsconfig dosyaları atayabilirsin

Ne Değildir?

  • Bu dosya kod dosyası değildir, sadece yapılandırma içerir.
  • Mantıksal kod yazılmaz.
  • Runtime’da etkisi yoktur. Sadece build-time etkisi vardır.

Neden Önemlidir?

  • Projeyi CLI ile yönetmenin anahtarıdır.
  • Build’in neyi nasıl yapacağını belirler.
  • Takım içinde standart bir yapı sağlar.

Sonuç

angular.json, Angular CLI’nin seni tanıdığı yerdir. Projeyi nasıl başlatacağını, nasıl derleyeceğini, hangi dosyaları dahil edeceğini hep buradan öğrenir.

Angular ile ciddi bir iş yapacaksan, bu dosyayı tanımadan olmaz ;)

Share:
Back to Blog

Related Posts

View All Posts »
2. Initially

2. Initially

1. Angular CLI NodeJs üzerinde çalışır öncelikle NodeJs kurmalı. 1. 1. 1. 1. Bir kaç soru soracak sistem tasarımına göre bunlara cevap ver. 1. - Hayırlı olsun Angular ayağa...

18. Monorepo Nedir?

18. Monorepo Nedir?

Ne Bu Monorepo? Projeyi yazıyorsun, her şey yolunda. Sonra ekip büyüyor. Frontend bir yerde, backend başka yerde, ortak UI bileşenleri başka bir repo’da… Bir noktada kendini şöyle...

16. Zoneless Nedir?

16. Zoneless Nedir?

Angular deyince akla genelde component’ler, service’ler falan gelir ama içerde bir mimari var ki, senin haberin bile olmadan bütün uygulamanın kaderini etkiliyor: Zone.js Bu...