Struktur Project Hardhat
Penjelasan
Project Hardhat hasil `npx hardhat init` punya struktur standar: `contracts/` berisi file Solidity, `scripts/` berisi script JavaScript untuk deployment atau interaksi, `test/` berisi file test JavaScript/TypeScript, dan `hardhat.config.js` (atau `.ts`) sebagai pusat konfigurasi seluruh project — mirip foundry.toml tapi ditulis sebagai module JavaScript, bukan format TOML. Karena berupa file JavaScript biasa, hardhat.config.js bisa berisi logika dinamis (import environment variable, kondisi if/else) yang sulit dilakukan di file konfigurasi statis. Ini adalah salah satu kelebihan pendekatan berbasis Node.js dibanding toolchain lain.
Contoh Konsep
// hardhat.config.js
require("@nomicfoundation/hardhat-toolbox");
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.20",
paths: {
sources: "./contracts",
tests: "./test",
cache: "./cache",
artifacts: "./artifacts",
},
};
// Struktur folder:
// hello_hardhat/
// ├── hardhat.config.js
// ├── contracts/Lock.sol
// ├── scripts/deploy.js
// └── test/Lock.js
Praktikum
Buka hardhat.config.js hasil init, lalu ubah versi Solidity menjadi 0.8.24 dan tambahkan pengaturan optimizer aktif dengan 200 runs.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Gunakan `require("@nomicfoundation/hardhat-toolbox")` di awal config — paket ini membundel plugin-plugin paling umum dipakai (ethers, chai matchers, gas reporter, verify) jadi satu instalasi saja.