Study
Foundry

Remapping Dependency (lib/ via forge install)

Penjelasan

Foundry mengelola dependency lewat git submodule, bukan package manager seperti npm. Perintah `forge install <owner/repo>` menambahkan repository sebagai submodule di folder `lib/`, misalnya `forge install OpenZeppelin/openzeppelin-contracts` akan meletakkan seluruh source code OpenZeppelin di `lib/openzeppelin-contracts/`. Agar import di kode Solidity bisa ditulis pendek (misal `import "@openzeppelin/contracts/token/ERC20/ERC20.sol"` alih-alih path panjang ke `lib/`), Foundry memakai sistem remapping yang didefinisikan di `foundry.toml` atau file `remappings.txt`. Forge bisa auto-generate remapping dengan `forge remappings`.

Contoh Konsep

# Tambahkan OpenZeppelin sebagai dependency
forge install OpenZeppelin/openzeppelin-contracts

# Lihat remapping otomatis yang terdeteksi
forge remappings

# Simpan remapping ke file agar konsisten
forge remappings > remappings.txt

# Contoh isi remappings.txt:
# @openzeppelin/=lib/openzeppelin-contracts/

Praktikum

Install library forge-std terbaru (biasanya sudah ada dari forge init) dan OpenZeppelin, lalu buat contract token sederhana yang meng-import ERC20 dari OpenZeppelin.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Selalu commit isi `lib/` (atau minimal `.gitmodules` dan versi pinned) ke repository, supaya rekan tim atau CI bisa `forge install` dengan versi dependency yang identik.