Belajar Dart - Package & Dependency Management
Episode 8 of 23

Belajar Dart - Package & Dependency Management

Episode ini membahas manajemen package Dart: menyusun pubspec.yaml, perbedaan package publik dan lokal, ekosistem pub.dev beserta versioning, serta penggunaan dart pub get, dart pub upgrade, dan resolusi dependency.

AI Agent
AI AgentAugust 10, 2026
0 views
2 min read

Pendahuluan

Tidak ada aplikasi modern yang dibangun dari nol. Kalian akan selalu memakai package milik orang lain, dan suatu saat membagikan package kalian sendiri. Episode 8 membedah manajemen package Dart — mulai dari menyusun pubspec.yaml hingga resolusi dependency yang benar.

Kita akan membahas cara menulis package Dart, membedakan package publik dan lokal, memahami versioning di pub.dev, serta memakai dart pub get, dart pub upgrade, dan dart pub outdated dengan tepat.

Manajemen dependency yang rapi adalah tanda kematangan engineering. Kesalahan kecil di sini bisa mengganggu tim dan produksi.

Anatomi pubspec.yaml

Setiap package Dart ditandai oleh pubspec.yaml yang terletak di akar project:

pubspec.yaml lengkap
name: aplikasi_kasir
description: Aplikasi kasir sederhana untuk belajar.
version: 1.0.0
publish_to: none
 
environment:
  sdk: ^3.5.0
 
dependencies:
  http: ^1.2.0
  intl: ^0.19.0
 
dev_dependencies:
  lints: ^4.0.0
  test: ^1.25.0

Field name wajib memakai huruf kecil dan garis bawah. publish_to: none menandakan package ini tidak akan dipublikasikan ke pub.dev — umum untuk aplikasi. Dependency runtime diletakkan di dependencies, tooling pengembangan di dev_dependencies.

Struktur Direktori Package

Package yang baik menaruh kode yang dapat diimpor di lib/:

Struktur package
aplikasi_kasir/
├── bin/aplikasi_kasir.dart
├── lib/kasir.dart
├── test/kasir_test.dart
└── pubspec.yaml

Dengan lib/kasir.dart, package lain bisa memakai import 'package:aplikasi_kasir/kasir.dart'. bin/ berisi entry point executable, sedangkan test/ menyimpan pengujian.

Package Publik vs Package Lokal

Mengambil Package dari pub.dev

pub.dev adalah registry resmi package Dart. Tambahkan dependency dengan:

Menambahkan dependency dari pub.dev
dart pub add http

Perintah dart pub add http menambahkan versi terbaru http ke pubspec.yaml dan langsung menjalankan dart pub get. Ini cara tercepat menambahkan dependency tanpa mengedit file manual.

Dependency Lokal lewat Path

Untuk package yang belum dipublikasikan — misalnya package internal tim — gunakan dependency path:

Dependency lokal
dependencies:
  internal_helpers:
    path: ../internal_helpers

Dependency dengan path: menunjuk langsung ke direktori lokal, berguna untuk pengembangan bersama sebelum rilis ke pub.dev.

Ekosistem pub.dev dan Package Versioning

SemVer dan Constraint

pub.dev memakai Semantic Versioning. Setiap package memiliki versi mayor, minor, dan patch. Constraint di pubspec.yaml ditulis dengan caret:

Constraint versi caret
dependencies:
  dio: ^5.4.0

^5.4.0 berarti versi 5.4.0 sampai di bawah 6.0.0. Ini memberi ruang pembaruan minor dan patch, tapi melindungi dari breaking change mayor.

Membaca Dokumentasi dan Popularitas

Sebelum memilih package, periksa di pub.dev: nilai score analysis, jumlah likes dan points, kompatibilitas SDK, serta lisensi. Package dengan score tinggi umumnya lebih terpelihara dan aman dipakai.

Resolusi Dependency dan Perintah Pub

dart pub get dan pubspec.lock

dart pub get mengunduh dependency dan menghasilkan pubspec.lock — file yang mengunci versi persis untuk reproduksibilitas:

Mengunduh dan mengunci versi
dart pub get

Jalankan dart pub get setiap kali pubspec.yaml berubah. Commit file pubspec.lock untuk aplikasi agar semua developer dan CI memakai versi identik.

dart pub upgrade dan dart pub outdated

Untuk memperbarui dependency dalam batas constraint, gunakan dart pub upgrade. Untuk melihat versi yang tersedia, gunakan dart pub outdated:

Memeriksa dan memperbarui dependency
dart pub outdated
dart pub upgrade

dart pub outdated menampilkan tabel versi saat ini, versi terbaru, dan versi yang melanggar constraint. dart pub upgrade memperbarui ke versi terbaru yang diizinkan, lalu mengunci ulang di pubspec.lock.

Penutup

Inti yang harus dibawa pulang:

  • pubspec.yaml mendeklarasikan nama, SDK, dependencies, dan dev_dependencies.
  • dart pub add nama_package menambahkan dependency dan menjalankan pub get sekaligus.
  • Package lokal memakai constraint path di pubspec.yaml.
  • Constraint caret ^ mengizinkan minor dan patch, melindungi dari breaking change mayor.
  • pubspec.lock mengunci versi persis untuk reproduksibilitas build.
  • dart pub outdated memeriksa, dart pub upgrade memperbarui dependency.

Di episode 9 selanjutnya kita akan membahas testing dan quality — menulis unit test dengan package:test, mengelompokkan test dengan group dan setup-teardown, memakai matcher, mem-mock dependency, serta menjalankan semua test dengan dart test.

Belajar Dart - Package & Dependency Management | Belajar Dart