pub — Dart tili va Flutter SDK uchun rasmiy paket menejeri. U uchinchi tomon kutubxonalarini yuklash, o'rnatish, yangilash va o'chirish, bog'liqlik versiyalarini boshqarish va o'z paketlaringizni nashr qilishni avtomatlashtiradi. Markaziy repozitoriy — pub.dev, unda 50 000 dan ortiq paket joylashgan. Loyiha konfiguratsiyasi pubspec.yaml faylida tavsiflanadi.
Asosiy ma'lumotlar
npm yoki Python uchun pip analogipubspec.lock takrorlanuvchi qurilish uchun aniq versiyalarni belgilaydipub (Package Universal Browser) — Dart SDK bilan birga keladigan o'rnatilgan paket menejeri. U tashqi kutubxonalarni boshqaradi, versiya nizolarini hal qiladi, tranzitiv bog'liqliklarni yuklaydi va paketlarni lokal keshlaydi. Flutter ekotizimida pub navigatsiya plaginlari, HTTP mijozlari, state menejerlari va boshqa komponentlarni ulash uchun asosiy vosita sifatida ishlatiladi.
Pub ning asosiy funktsiyalari: pub.dev reestridan bog'liqliklarni o'rnatish, lokal yo'llar (path-bog'liqliklari) va git-repozitoriyalari; semantik versiyalash qoidalariga muvofiq versiyalarni hal qilish; yuklangan paketlarni tizim katalogida keshlash; o'z paketlaringizni ochiq reestrda nashr qilish. Barcha operatsiyalar CLI buyrug'i dart pub yoki ekvivalent flutter pub orqali mavjud.
Pub arxitekturasi yopiq bog'liqlik grafigiga asoslanadi: menejer har bir paket aniq bir marta mavjud bo'lgan daraxtni quradi. Agar ikkita kutubxona bir paketning turli versiyalarini talab qilsa, pub mos diapazon topishga harakat qiladi yoki nizo xatosi haqida xabar beradi. Bu daraxtning turli tugunlarida bir paketning bir nechta versiyalariga ruxsat beruvchi npm yondashuvidan farq qiladi.
pubspec.yaml fayli — har qanday Dart yoki Flutter loyihasining markaziy konfiguratsiya faylidir. U YAML formatida yoziladi va metadata, bog'liqliklar, qurilish konfiguratsiyasi va SDK cheklovlarini o'z ichiga oladi. Quyida Flutter ilovasi uchun odatiy misol keltirilgan:
name: my_app
description: Flutter ilovasiga misol
version: 1.0.0+1
publish_to: none
environment:
sdk: ">=3.0.0 <4.0.0"
flutter: ">=3.10.0"
dependencies:
flutter:
sdk: flutter
http: ^1.1.0
provider: ^6.0.5
shared_preferences: ^2.2.0
path_provider: ^2.1.0
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^3.0.0
mockito: ^5.4.3
flutter:
uses-material-design: true
assets:
- assets/images/
- assets/fonts/pubspec.yaml ning asosiy maydonlari: name — paketning noyob nomi (faqat lotin harflari, pastki chiziq, raqamlar); description — qisqa tavsif (nashr qilish uchun majburiy); version — ortiqcha belgisidan keyin ixtiyoriy qurilish raqami bilan semantik versiya; environment — Dart SDK va Flutter SDK ning minimal versiyalari; dependencies — ilovaning asosiy bog'liqliklari; dev_dependencies — faqat ishlab chiqish va test uchun bog'liqliklar; flutter — Flutter konfiguratsiya bo'limi (assets, fonts, plugins).
publish_to maydoni nashr qilish imkoniyatini boshqaradi: none qiymati nashrni taqiqlaydi (ilovalar uchun odatiy), standart qiymat — https://pub.dev. dependency_overrides maydoni nizo holatida paket versiyasini majburiy o'zgartirishga imkon beradi — ehtiyotkorlik bilan, faqat vaqtinchalik yechim uchun foydalaning.
pub to'rt turdagi bog'liqliklarni qo'llab-quvvatlaydi, har biri pubspec.yaml ichida o'z sintaksisiga ega:
Standart tur — paket pub.dev yoki boshqa mos reestrdan yuklanadi. Paket nomi va versiyasi ko'rsatiladi. Misol: http: ^1.1.0 caret-versiyalash qoidalariga muvofiq >=1.1.0 va <2.0.0 diapazonidan eng so'nggi mos versiyani yuklaydi.
Flutter SDK yoki Dart SDK ni ulash uchun ishlatiladi. Sintaksis: flutter: sdk: flutter. Paket reestrdan emas, Flutter SDK ning lokal o'rnatilishidan olinadi. SDK bog'liqliklari versiyalanmaydi — ularning versiyasi joriy o'rnatilgan Flutter versiyasi bilan belgilanadi.
Paket bilan lokal katalogni ko'rsatadi. Kutubxonani ishlab chiqishda va nashr qilmasdan sinovdan o'tkazishda foydali. Sintaksis:
dependencies:
my_local_lib:
path: ../my_local_libYo'l bog'liqliklari pubspec.lock da qayd etilmaydi — har bir yangilanish ko'rsatilgan yo'ldan qayta hal qilinadi.
Paketni to'g'ridan-to'g'ri git-repozitoriyadan ulash imkonini beradi. Tarmoqlar, teglar va commitlar qo'llab-quvvatlanadi:
dependencies:
my_git_lib:
git:
url: https://github.com/user/my_git_lib.git
ref: mainGit bog'liqliklari fork-lar, nashr qilinmagan tuzatishlar yoki Pull Request ustida ishlash uchun qulay. Qurilishda kutilmagan o'zgarishlarning oldini olish uchun tarmoq o'rniga aniq teg yoki commit ko'rsatish tavsiya etiladi.
pub Semantic Versioning 2.0 ga qat'iy rioya qiladi: format MAJOR.MINOR.PATCH, bu yerda MAJOR — mos kelmaydigan o'zgarishlar, MINOR — orqaga mos qo'shimchalar, PATCH — orqaga mos tuzatishlar. Ushbu sxema asosida pub paketlarning mosligini aniqlaydi va nizolarni hal qiladi.
Versiyalarni belgilash uchun pubspec.yaml da uchta asosiy operator ishlatiladi:
^1.2.3 >=1.2.3 va <2.0.0 ga ekvivalent. Eng keng tarqalgan operator, chunki asosiy versiya doirasida moslikni nazarda tutadi. Asosiy versiyasi 0 (nol) bo'lgan paketlar uchun — ^0.1.2 >=0.1.2 va <0.2.0 degani, bu beqaror versiyalar uchun SemVer qoidalariga mos keladi.~1.2.3 >=1.2.3 va <1.3.0 ga ekvivalent. Kichik versiyani mahkamlaydi, faqat patch yangilanishlariga ruxsat beradi. Kamroq ishlatiladi, asosan kichik versiya darajasida nomoslik ma'lum bo'lganda.>=1.2.0 <2.0.0 — to'liq nazorat beruvchi ochiq yozuv. Murakkab cheklovlar uchun foydali, masalan, tranzitiv bog'liqliklarning bir nechta versiyalaridan foydalanganda.dart pub get bajarilgandan so'ng, pub barcha hal qilingan paketlarning (to'g'ridan-to'g'ri va tranzitiv) aniq versiyalarini belgilovchi pubspec.lock faylini yaratadi. Bu fayl barcha mashinalarda takrorlanuvchi qurilishlarni ta'minlash uchun versiyani boshqarish tizimiga kiritilishi kerak. dart pub upgrade bajarilganda, lock-fayl belgilangan cheklovlar doirasida eng so'nggi mos versiyalarga yangilanadi.
dependency conflict xatosi ikki paket bir bog'liqlikning bir-biriga mos kelmaydigan diapazonlarini talab qilganda yuzaga keladi. pub qaysi paketlar nizoga kirganini va qanday sabab bilan ekanini xabar qiladi. Yechim: nizodagi paketlardan birini mos versiyaga yangilash, dependency_overrides dan foydalanish (vaqtinchalik chora) yoki paketni alternativ bilan almashtirish.
Barcha pub operatsiyalari yagona CLI interfeysi orqali bajariladi. Dart SDK da dart pub buyrug'i, Flutter SDK da — ekvivalent flutter pub (qo'shimcha ravishda Flutter SDK bog'liqliklari va plaginlarini hisobga oladi) ishlatiladi. Quyida asosiy buyruqlar keltirilgan:
dart pub get — pubspec.yaml da ko'rsatilgan barcha bog'liqliklarni yuklaydi, versiyalarni hal qiladi va pubspec.lock yaratadi/yangilaydi. Loyiha birinchi marta klonlanganda yoki bog'liqliklar o'zgartirilganda bajariladi.dart pub upgrade — barcha bog'liqliklarni pubspec.yaml cheklovlari doirasida eng so'nggi versiyalarga yangilaydi va pubspec.lock ni qayta yozadi. Bitta paketni yangilash mumkin: dart pub upgrade http.dart pub add <package> — pubspec.yaml ga yangi bog'liqlik qo'shadi va darhol pub get ni bajaradi. Misol: dart pub add dio dio paketining eng so'nggi versiyasini qo'shadi.dart pub remove <package> — bog'liqlikni pubspec.yaml dan olib tashlaydi va grafikni qayta hal qilishni boshlaydi.dart pub cache repair — barcha keshlangan paketlarni qayta yuklaydi. Lokal keshning buzilishi yoki tekshirish summasi xatolarida yordam beradi.dart pub deps — bog'liqlik daraxtini qulay matn formatida ko'rsatadi. Tranzitiv bog'liqliklarni tahlil qilish va takrorlanishlarni topish uchun foydali.dart pub publish — joriy paketni pub.dev da nashr qiladi. Nashrdan oldin pubspec.yaml ning to'g'riligini, litsenziya va tavsifni tekshiradi.dart pub outdated — joriy, istalgan va eng so'nggi mavjud versiyani ko'rsatadigan eskirgan bog'liqliklar ro'yxatini chiqaradi. npm outdated analogi.Barcha buyruqlar qisqartirilgan shaklda ham mavjud: dart pub get — dart pub g sifatida (barcha qisqartmalar emas). Flutter loyihalarida pub buyruqlaridan oldin flutter prefiksi qo'shiladi: flutter pub get, flutter pub add va h.k. Flutter versiyasi qo'shimcha ravishda plaginlarning maqsadli platforma bilan mosligini tekshiradi.
pub.dev — Dart va Flutter ekotizimining markaziy paket reestridir. 2025 yil yanvar holatiga ko'ra, u yerda 50 000 dan ortiq paket nashr qilingan, jami 10 milliard martadan ko'proq yuklab olingan. Har bir paket tavsif, hujjatlar, mashhurlik reytinglari (Popularity), Pub Points ballari va versiyalar bilan sahifaga ega.
Pub Points — 0 dan 130 gacha ball bilan paket sifatini avtomatik baholash tizimi. Hisobga olinadi: litsenziya mavjudligi, tavsif, misollar, Dart ning so'nggi barqaror versiyasi bilan moslik, zaifliklarning yo'qligi, test qamrovi, formatlashning to'g'riligi. Yuqori ball paketning qidiruvda ko'rinishini va foydalanuvchi ishonchini oshiradi.
Nashr qilish jarayoni bir necha bosqichni o'z ichiga oladi:
pubspec.yaml ni tekshiring: name, description, version, license (SPDX identifikatorini ko'rsatish tavsiya etiladi, mas. MIT).dart pub publish --dry-run ni ishga tushiring — serverga yubormasdan nashr simulyatsiyasi, paketga kiritiladigan barcha fayllar va mumkin bo'lgan xatolarni ko'rsatadi.dart pub publish brauzerni OAuth autentifikatsiyasi uchun ochadi.Muhim qoidalar: faqat noyob nomga ega paketlar nashr qilinishi mumkin; bir marta nashr qilingan versiyani o'chirib bo'lmaydi (faqat yashirish mumkin — dart pub unpublish — 7 kun ichida); katta yangilanishlar uchun Semantic Versioning qoidalariga rioya qilish, asosiy versiyani o'zgartirmasdan umumiy API ni buzmaslik kerak.
Tez-tez beriladigan savollar
dart pub get va dart pub upgrade o'rtasidagi farq nima?pub get mavjud pubspec.lock dan versiyalarni yuklaydi, uni o'zgartirmagan holda (lock-fayl mavjud bo'lmasa — yaratadi). pub upgrade lock-faylni hisobga olmaydi va barcha bog'liqliklarni eng so'nggi mos diapazon bo'yicha qayta hal qiladi, so'ngra lock-faylni qayta yozadi.
Path bog'liqligidan foydalaning: dependencies: my_package: path: ../my_package. Yo'l loyiha ildiziga nisbatan ko'rsatiladi. Bunday bog'liqlik pubspec.lock da qayd etilmaydi — har bir qurilishda pub katalogning joriy mazmunini oladi.
Nizodagi paketlarni bir-biriga mos keladigan diapazonli versiyalarga yangilang. Agar imkonsiz bo'lsa — vaqtinchalik pubspec.yaml da dependency_overrides dan foydalaning yoki paketlardan birini alternativ bilan almashtiring. Bog'liqlik daraxtini ko'rish uchun dart pub deps ni ishga tushirish foydali.
pubspec.lock barcha bog'liqliklarning (to'g'ridan-to'g'ri va tranzitiv) aniq versiyalarini belgilaydi va barcha ishlab chiquvchi mashinalarida va CI/CD da takrorlanuvchi qurilishni ta'minlaydi. Usiz har bir pub get bajarilishi yangi patch versiyalarining chiqishi tufayli biroz boshqacha versiyalarni tanlashi mumkin.
Dastlabki tekshirish uchun dart pub publish --dry-run, so'ngra dart pub publish ni bajaring. Birinchi nashrda Google orqali avtorizatsiya talab qilinadi. Paket noyob nom, tavsif, litsenziya va to'g'ri versiyaga ega bo'lishi kerak.
Pub Points — 0 dan 130 gacha sifatni baholash tizimi. Litsenziya (MIT, Apache-2.0), kengaytirilgan tavsif, foydalanish misollari, testlar qo'shish, Dart ning so'nggi versiyasi bilan moslikni saqlash va analizatorning sintaktik izohlarini tuzatish orqali ballarni yaxshilash mumkin.
Xulosa
pub get dan pub publish gacha paket boshqaruvining to'liq hayot aylanishini qamrab oladiBiz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.