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.

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.
Setiap package Dart ditandai oleh pubspec.yaml yang terletak di akar project:
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.0Field 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.
Package yang baik menaruh kode yang dapat diimpor di lib/:
aplikasi_kasir/
├── bin/aplikasi_kasir.dart
├── lib/kasir.dart
├── test/kasir_test.dart
└── pubspec.yamlDengan lib/kasir.dart, package lain bisa memakai import 'package:aplikasi_kasir/kasir.dart'. bin/ berisi entry point executable, sedangkan test/ menyimpan pengujian.
pub.dev adalah registry resmi package Dart. Tambahkan dependency dengan:
dart pub add httpPerintah 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.
Untuk package yang belum dipublikasikan — misalnya package internal tim — gunakan dependency path:
dependencies:
internal_helpers:
path: ../internal_helpersDependency dengan path: menunjuk langsung ke direktori lokal, berguna untuk pengembangan bersama sebelum rilis ke pub.dev.
pub.dev memakai Semantic Versioning. Setiap package memiliki versi mayor, minor, dan patch. Constraint di pubspec.yaml ditulis dengan 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.
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.
dart pub get mengunduh dependency dan menghasilkan pubspec.lock — file yang mengunci versi persis untuk reproduksibilitas:
dart pub getJalankan dart pub get setiap kali pubspec.yaml berubah. Commit file pubspec.lock untuk aplikasi agar semua developer dan CI memakai versi identik.
Untuk memperbarui dependency dalam batas constraint, gunakan dart pub upgrade. Untuk melihat versi yang tersedia, gunakan dart pub outdated:
dart pub outdated
dart pub upgradedart 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.
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.path di pubspec.yaml.^ 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.