pubspec.yaml — bu nədir, Flutter-də strukturu və asılılıq konfiqurasiyası

Müəllif: IT Sectr Dərc olunub: 2026-05-31 Oxuma vaxtı: 8 dəq

pubspec.yaml — Flutter layihəsinin metadataları, asılılıqları və tətbiq resurslarını təyin edən əsas konfiqurasiya faylıdır. O, YAML formatında yazılıb və Dart paket meneceri tərəfindən işlənir. Dart documentation, 2025-ə görə, bu faylın hər sətri qurma, nəşr və versiyalaşdırmaya təsir edir. pubspec.yaml Flutter ekosistemində Podfile, build.gradle və Info.plist fayllarını əvəz edərək onların funksiyalarını vahid manifestdə birləşdirir.

Əsas məqamlar

  • pubspec.yaml Flutter layihəsinin adını, versiyasını, asılılıqlarını və resurslarını YAML formatında təsvir edir
  • dependencies bölməsi əsas kitabxanaları, dev_dependencies isə yalnız inkişaf və test üçündür
  • Assets şəkillər, şriftlər və JSON faylları olan qovluqlara yollar göstərilməklə qoşulur
  • SDK constraints layihənin uyğunluğu üçün Dart və Flutter-in minimal versiyasını təyin edir
  • YAML formatı iki boşluqdan ibarət ciddi girintilər tələb edir, tabulasiya qadağandır

pubspec.yaml nədir

pubspec.yaml — paket meneceri pub-un Dart və Flutter layihələrini idarə etmək üçün istifadə etdiyi YAML formatında manifest faylıdır. O, layihənin kök qovluğunda yerləşir və hər flutter pub get əmrində işlənir. Konfiqurasiyanın bir neçə fayla yayıldığı digər platformalardan fərqli olaraq, Flutter bütün ehtiyaclar üçün bir mərkəzləşdirilmiş manifestdən istifadə edir.

Fayl metadata məlumatlarını ehtiva edir: layihə adı, təsvir, versiya, müəllif. Bu məlumatlar paketi pub.dev-də nəşr edərkən və App Store və Google Play üçün tətbiq qurarkən istifadə olunur. description sahəsi paket axtarış nəticələrində göstərilir, buna görə də məlumatlandırıcı olmalı və digər tərtibatçıların kitabxananı tapa bilməsi üçün açar sözlər ehtiva etməlidir.

Düzgün pubspec.yaml olmadan Flutter layihəsi qurula bilməz. Sintaksis səhvləri və ya yanlış girintilər dərhal Error on line X mesajı ilə kompilasiya xətasına səbəb olur. YAML boşluqlara həssasdır: bir artıq boşluq məlumat strukturunu dəyişir, tabulasiya isə sintaksis xətası yaradır. Buna görə pubspec.yaml-i əl ilə redaktə edərkən YAML sintaksisini vurğulayan redaktordan, məsələn Flutter üçün rəsmi genişlənməsi olan VS Code-dan istifadə etmək vacibdir.

pubspec.yaml-in əsas bölmələri

pubspec.yaml məcburi və isteğe bağlı bölmələrdən ibarətdir. Hər bölmə layihənin müəyyən bir konfiqurasiya aspektinə cavabdehdir. Bölmələrin sırası vacib deyil, lakin community konvensiyasına görə iyerarxiya qorunur: metadata, mühit, asılılıqlar, resurslar, platformalar.

name və description

name sahəsi paketin unikal identifikatorunu snake_case formatında, yalnız kiçik latın hərfləri, rəqəmlər və alt xətlərdən ibarət olaraq təyin edir. description sahəsi — pub.dev-də nəşr üçün məcburi olan, 180 simvola qədər layihənin qısa təsviridir. Təsvir paketin təyinatını izah etməli, adı təkrarlamamalı və repozitoriyanın axtarış optimallaşdırılması üçün açar sözlər ehtiva etməlidir.

yaml
name: my_flutter_app
description: Flutter ilə tapşırıq idarəetmə tətbiqi
publish_to: 'none'

version və environment

version sahəsi semantik versiyalaşdırma major.minor.patch istifadə edir, artı işarəsindən sonra isteğe bağlı qurma nömrəsi ilə (1.0.0+1). environment bölməsi uyğunluğu təmin etmək üçün Dart və Flutter SDK-nın minimal və maksimal versiyalarını təyin edir. Əgər SDK-nın yeni versiyası layihə kodu ilə uyğun olmayan kritik dəyişikliklər ehtiva edərsə, kompilasiya başa düşülən xəta mesajı ilə dayandırılır.

yaml
version: 1.0.0+1
environment:
  sdk: '>=3.2.0 <4.0.0'
  flutter: '>=3.16.0'

dependencies və dev_dependencies

dependencies bölməsi tətbiqin işləməsi üçün lazım olan paketləri sadalayır. dev_dependencies bölməsi test, kod generasiyası və inkişaf üçün paketləri ehtiva edir — onlar buraxılış qurmasına daxil deyil. Asılılıqların bölünməsi performans üçün kritikdir: dependencies-dəki hər paket son APK və ya IPA-nın ölçüsünü, həmçinin əlavə kitabxanaların işə salınması səbəbindən tətbiqin işə düşmə vaxtını artırır.

yaml
dependencies:
  flutter:
    sdk: flutter
  http: ^1.2.0
  provider: ^6.1.0
  shared_preferences: ^2.2.0
  cached_network_image: ^3.3.0

dev_dependencies:
  flutter_test:
    sdk: flutter
  mockito: ^5.4.0
  build_runner: ^2.4.0

Assets və şriftlərin konfiqurasiyası

flutter bölməsi resursların, şriftlərin və platforma parametrlərinin konfiqurasiyası üçün alt bölmələr ehtiva edir. Resurslar konkret faylların və ya bütün kataloqların göstərildiyi paths massivi vasitəsilə qoşulur. Bütün yollar pubspec.yaml-a nisbətən deyil, layihənin kök kataloquna nisbətən göstərilir. Bu, tez-tez təcrübəsiz Flutter tərtibatçılarında çaşqınlığa səbəb olan vacib bir nüansdır.

yaml
flutter:
  uses-material-design: true
  assets:
    - assets/images/
    - assets/icons/
    - assets/config.json
    - assets/data/translations/
  fonts:
    - family: RobotoMono
      fonts:
        - asset: fonts/RobotoMono-Regular.ttf
        - asset: fonts/RobotoMono-Bold.ttf
          weight: 700
        - asset: fonts/RobotoMono-Italic.ttf
          style: italic

Assets-in pubspec.yaml vasitəsilə qoşulması faylları runtime-də AssetBundle vasitəsilə əlçatan edir. Bu, şəkillər, JSON, mətn faylları və digər resurslar üçün işləyir. Flutter müxtəlif ekran təsvir ölçülərini avtomatik dəstəkləyir: images/2x/ və images/3x/ yerləşdirsəniz, Flutter cihazın device pixel ratio-na əsasən şəklin uyğun versiyasını seçir. Bunun üçün assets-də yalnız images/ kök qovluğunu göstərmək kifayətdir.

Fərdi şriftlər family və çap növlərinin siyahısı ilə fonts bölməsi vasitəsilə əlavə olunur. pubspec.yaml dəyişdirildikdən sonra parametrləri tətbiq etmək üçün flutter pub get icra edilməlidir. Şriftlər həm MaterialApp mövzusunda qlobal, həm də konkret vidjetlərdə lokal olaraq istifadə edilə bilər. Hər çap növü üçün weight (100-900) və style (normal, italic) təyin edilə bilər ki, bu da Flutter-ə kodda FontWeight və FontStyle istifadə edərkən şrift faylını düzgün seçməyə imkan verir.

Asılılıqların və versiyaların idarə edilməsi

pub asılılıq mənbələrini göstərmək üçün bir neçə üsul dəstəkləyir: pub.dev, Git repozitoriyaları, lokal yollar və özəl repozitoriyalar. Mənbənin seçimi inkişaf mərhələsindən asılıdır: sabit versiyalar üçün pub.dev, fork və fərdi dəyişikliklər üçün Git, paralel inkişaf etdirilən kitabxanalar üçün lokal yol istifadə olunur.

MənbəSintaksisNümunə
Pub.dev^1.0.0http: ^1.2.0
Gitgit: urlgit: https://github.com/user/pkg.git
Lokal yolpath: ./libpath: ../my_package
Hostedhosted: namehosted: my_private_repo

^version operatoru uyğun versiya deməkdir: ^1.2.0 >=1.2.0 və <2.0.0 versiyalarına icazə verir. Bu, CocoaPods-da ~> operatorunun və npm-də Caret-operatorunun analoqudur. pub Dependency Hell-i bütün məhdudiyyətləri ödəyən versiya kombinasiyasını tapan SAT-həlledici alqoritmi vasitəsilə avtomatik həll edir. Əgər belə kombinasiya mövcud deyilsə, pub ziddiyyət təşkil edən paketləri göstərən ətraflı mesaj verir.

pubspec.lock faylı asılılıqların dəqiq versiyalarını təsbit edir. Təkrarolunan qurmaları təmin etmək üçün tətbiqlər üçün versiya nəzarət sistemində saxlanmalıdır. Kitabxanalar üçün pubspec.lock repozitoriyaya daxil edilmir, çünki kitabxana istifadəçiləri onu müxtəlif asılılıq versiyaları ilə istifadə edə bilməlidirlər. flutter pub upgrade əmri pubspec.yaml məhdudiyyətlərinə uyğun olaraq bütün asılılıqları yeniləyir, flutter pub outdated isə hansı paketlərin yenilənə biləcəyini göstərir.

Qurma və nəşr konfiqurasiyası

Tətbiqi pub.dev-də nəşr etmək üçün parametrlər publish_to bölməsində göstərilir. 'none' dəyəri paketin təsadüfən nəşrinin qarşısını alır, bu daxili və ya qeyri-ictimai layihələr üçün vacibdir. publish_to mövcud deyilsə, pub paketi defolt pub.dev-də nəşr etməyə çalışır ki, bu da arzuolunmaz kod sızmasına səbəb ola bilər.

flutter bölməsi platforma parametrlərini ehtiva edir: platforma fayllarının avtomatik generasiyası üçün generate və funksionallığın modul yüklənməsi üçün deferred-components. generate: true parametri Flutter-ə flutter create --platforms vasitəsilə yeni platformalar əlavə edilərkən platforma layihələrini (iOS, Android, Web) avtomatik yaratmağa və yeniləməyə imkan verir. Bu parametr olmadan platforma qovluqlarının strukturu pubspec.yaml ilə sinxronizasiyanı itirə bilər.

yaml
flutter:
  generate: true
  deferred-components:
    - name: photoEditor
      libraries:
        - package:photo_editor/library.dart

platforms bölməsi paket üçün hədəf platformaları təyin edir. Tətbiqlər üçün o, flutter create vasitəsilə konkret platforma dəstəyi əlavə edilərkən avtomatik təyin olunur. Platformalar pubspec.yaml redaktəsi ilə əl ilə əlavə edilə və silinə bilər. Deferred Components tətbiqin hissələrini tələb əsasında yükləməyə imkan verərək quraşdırma ölçüsünü azaldır — bu, xüsusilə oyunlar və az istifadə olunan məzmunu çox olan tətbiqlər üçün aktualdır.

Paket nəşr edilərkən pub pubspec.yaml-in bütün sahələrini repozitoriyanın tələblərinə uyğunluq baxımından yoxlayır. Məcburi name, version və description sahələrinin olmaması nəşrin rədd edilməsinə səbəb olur. Əlavə olaraq lisenziyanın düzgünlüyü, README.md və CHANGELOG.md fayllarının mövcudluğu yoxlanılır. Kod analizatorunun (dart analyze) səhvləri olan paketlər də validasiyadan keçmir. Uğurlu nəşrdən sonra paket bir neçə dəqiqə ərzində pub.dev-də əlçatan olur.

dependency_overrides bölməsi transitiv asılılıqlardan gələn məhdudiyyətləri nəzərə almadan paket versiyasını məcburi şəkildə təyin etməyə imkan verir. Bu, güclü, lakin təhlükəli mexanizmdir: düzgün istifadə edilmədikdə kitabxana uyğunsuzluğuna səbəb ola bilər. dependency_overrides yalnız müvəqqəti olaraq konfliktləri həll etmək və ya yeni versiyaları test etmək üçün istifadə edin. Əsas asılılıqlar düzəldildikdən sonra override silinməlidir ki, uzunmüddətli perspektivdə layihənin asılılıq qrafını pozmasın.

executables bölməsi pubspec.yaml-də paket aktivləşdirilərkən pub-un PATH-ə quraşdırdığı icra olunan skriptləri göstərməyə imkan verir. Bu, Dart-də yazılmış CLI alətləri, məsələn build_runner və ya dart_code_metrics üçün faydalıdır. dart pub global activate əmri paketi qlobal olaraq quraşdırır və executables-də göstərilən skriptləri terminaldan əlçatan edir. Tətbiqlər üçün executables adətən istifadə edilmir, çünki giriş nöqtəsi lib/main.dart-də main vasitəsilə təyin olunur.

Tez-tez verilən suallar

Niyə pubspec.yaml tabulasiyanı qəbul etmir?

YAML formatı girintilər üçün tabulasiya simvollarını qadağan edir. Hər yuvalama səviyyəsi üçün düz iki boşluq istifadə edin. Girinti xətası flutter pub get icra edilərkən gözlənilməz simvol mesajı ilə sintaksis xətasına səbəb olur. VS Code Flutter plaqini ilə avtomatik olaraq düzgün girintiləri təyin edir.

dependencies və dev_dependencies arasında nə fərq var?

dependencies tətbiqin yekun qurmasına daxil edilir və istifadəçi cihazlarında runtime-də əlçatan olur. dev_dependencies yalnız inkişaf və test mərhələsində istifadə olunur — onlar buraxılış APK və ya IPA-ya daxil deyil. Nümunə: flutter_test istehsal qurmasının ölçüsünü artırmamaq üçün yalnız dev_dependencies-də olmalıdır.

pubspec.yaml-də bütün asılılıqları necə yeniləmək olar?

flutter pub upgrade əmri pubspec.yaml-də göstərilən məhdudiyyətlərə uyğun olaraq bütün asılılıqları ən son versiyalara yeniləyir. Tək paketi yeniləmək üçün flutter pub upgrade istifadə edin. flutter pub outdated əmri köhnəlmiş versiyaları və mövcud yeniləmələri olan paketlərin siyahısını göstərəcək.

Paket versiyasından əvvəl ^ simvolu nə deməkdir?

^ simvolu uyğun versiyalaşdırma (caret) deməkdir. ^1.2.0 1.2.0-dan 2.0.0-dək (2.0.0 daxil olmamaqla) istənilən versiya deməkdir. Bu, pubspec.yaml-də asılılıqları göstərmək üçün standart operatordur, API-də böyük dəyişiklik riski olmadan düzəlişlər və kiçik yeniləmələr əldə etməyə zəmanət verir.

pubspec.lock git-ə əlavə edilməlidirmi?

Bəli, tətbiqlər üçün pubspec.lock eyni qurmaları təmin etmək üçün repozitoriyada məcburidir. Kitabxanalar üçün onu daxil etməmək tövsiyə olunur ki, kitabxana istifadəçiləri asılılıqların ən son uyğun versiyalarını alsınlar. Bu, Ruby-də Gemfile.lock və Node.js-də package-lock.json qaydalarına bənzər konvensiyadır.

Nəticə

  • pubspec.yaml — asılılıqları, resursları və metadataları idarə edən YAML formatında Flutter layihə manifesti
  • name, version, environment bölmələri uyğunluq üçün məcburi metadataları və SDK məhdudiyyətlərini təyin edir
  • dependencies runtime üçün əsas paketləri, dev_dependencies yalnız inkişaf və test üçün ehtiva edir
  • Assets və şriftlər flutter bölməsi vasitəsilə ekran təsvir ölçülərinin avtomatik seçilməsi ilə qoşulur
  • Asılılıq mənbələri: pub.dev, Git, lokal yollar və müxtəlif ssenarilər üçün özəl repozitoriyalar
  • pubspec.lock komandanın bütün maşınlarında təkrarolunan qurmalar üçün versiyaları təsbit edir
  • YAML formatı qurma zamanı struktur validasiyası ilə tabulasiyasız iki boşluq girintisi tələb edir

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun