De basis van Web3- en DApp-ontwikkeling · Les

Scripts en taken

Workflows automatiseren

Les 3 van 413 stappen

Scripts en taken is een gratis De basis van Web3- en DApp-ontwikkeling-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject De basis van Web3- en DApp-ontwikkeling. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus De basis van Web3- en DApp-ontwikkeling bevat in totaal 4 lessen.

Scripts versus taken

Hardhat biedt twee manieren om werk te automatiseren:

  • Scripts — gewone Node.js-bestanden die je uitvoert voor eenmalige taken, zoals implementatie.
  • Taken — herbruikbare opdrachten die met argumenten en helptekst in de Hardhat CLI zijn geïntegreerd.

Gebruik scripts voor ad-hocautomatisering en taken voor herhaalbare opdrachten die je team opnieuw gebruikt.

Een implementatiescript

Scripts staan in scripts/. Een implementatiescript gebruikt ethers uit de Hardhat Runtime Environment:

const hre = require("hardhat"); async function main() { const Greeter = await hre.ethers.getContractFactory("Greeter"); const greeter = await Greeter.deploy(); await greeter.waitForDeployment(); console.log("Deployed to:", await greeter.getAddress()); } main();
const hre = require("hardhat");

async function main() {
  const Greeter = await hre.ethers.getContractFactory("Greeter");
  const greeter = await Greeter.deploy();
  await greeter.waitForDeployment();
  console.log("Deployed to:", await greeter.getAddress());
}

main();

Een script uitvoeren

Voer een script uit via Hardhat, zodat de runtimeomgeving en het netwerk worden geïnjecteerd:

npx hardhat run scripts/deploy.js

Voeg --network toe om een specifiek netwerk te gebruiken. Zonder deze optie wordt het script uitgevoerd op een tijdelijk netwerk binnen het proces.

npx hardhat run scripts/deploy.js --network localhost

De runtimeomgeving

De Hardhat Runtime Environment (HRE) wordt automatisch geïnjecteerd en geeft je:

  • hre.ethers — de helpers van ethers.js.
  • hre.network — informatie over het actieve netwerk.
  • hre.config — de opgeloste configuratie.

Binnen taken is de HRE het tweede argument; in scripts is deze beschikbaar via de module hardhat.

Een aangepaste taak definiëren

Definieer taken in hardhat.config.js met de helper task:

const { task } = require("hardhat/config"); task("accounts", "Prints the list of accounts", async (taskArgs, hre) => { const accounts = await hre.ethers.getSigners(); for (const account of accounts) { console.log(account.address); } });
const { task } = require("hardhat/config");

task("accounts", "Prints the list of accounts", async (taskArgs, hre) => {
  const accounts = await hre.ethers.getSigners();
  for (const account of accounts) {
    console.log(account.address);
  }
});

Een aangepaste taak uitvoeren

Na het definiëren verschijnt je taak in de CLI, net als elke ingebouwde opdracht:

npx hardhat accounts

De taak verschijnt ook onder npx hardhat met de beschrijving, zodat teamleden deze kunnen vinden zonder de configuratie te lezen.

npx hardhat accounts

Taakparameters

Taken accepteren benoemde parameters met addParam:

task("balance", "Prints an account balance") .addParam("account", "The address") .setAction(async (taskArgs, hre) => { const bal = await hre.ethers.provider.getBalance(taskArgs.account); console.log(hre.ethers.formatEther(bal), "ETH"); });

Voer de taak uit met npx hardhat balance --account 0x....

task("balance", "Prints an account balance")
  .addParam("account", "The address")
  .setAction(async (taskArgs, hre) => {
    const bal = await hre.ethers.provider.getBalance(taskArgs.account);
    console.log(hre.ethers.formatEther(bal), "ETH");
  });

Ingebouwde taken overschrijven

Je kunt bestaande taken zoals compile uitbreiden door dezelfde naam te gebruiken. Gebruik runSuper om het oorspronkelijke gedrag aan te roepen:

task("compile", async (args, hre, runSuper) => { console.log("Before compiling..."); await runSuper(args); console.log("Done compiling!"); });

Dit is handig om logging of stappen voor nabewerking toe te voegen.

task("compile", async (args, hre, runSuper) => {
  console.log("Before compiling...");
  await runSuper(args);
  console.log("Done compiling!");
});

Subtaken

Subtaken zijn interne taken die niet in de hoofdhelp-lijst worden weergegeven. Hiermee kun je complexe taken opsplitsen in herbruikbare onderdelen:

const { subtask } = require("hardhat/config"); subtask("print-network", async (args, hre) => { console.log("Network:", hre.network.name); });

Roep subtaken vanuit andere taken aan met hre.run("print-network").

const { subtask } = require("hardhat/config");

subtask("print-network", async (args, hre) => {
  console.log("Network:", hre.network.name);
});

Wanneer gebruik je welke

Vuistregels:

  • Heb je snel een implementatie of migratie nodig? Schrijf een script.
  • Heb je een herbruikbare opdracht met parameters en helptekst nodig? Schrijf een taak.
  • Wil je interne stappen samenstellen? Gebruik subtaken.

Zowel scripts als taken hebben volledige toegang tot de HRE.

Scripts in package.json

Voor het gemak kun je veelgebruikte opdrachten als npm-scripts verpakken:

{ "scripts": { "deploy": "hardhat run scripts/deploy.js --network localhost", "test": "hardhat test" } }

Teamleden voeren daarna npm run deploy uit zonder dat ze de vlaggen uit hun hoofd hoeven te kennen.

{
  "scripts": {
    "deploy": "hardhat run scripts/deploy.js --network localhost",
    "test": "hardhat test"
  }
}

Snelle controle

Test uw begrip van scripts en taken.

Samenvatting

U hebt geleerd hoe u Hardhat-workflows automatiseert.

  • Scripts in scripts/ worden uitgevoerd via npx hardhat run voor eenmalige taken.
  • Taken die met task() zijn gedefinieerd, worden volwaardige CLI-opdrachten.
  • De HRE stelt ethers, network en config beschikbaar.
  • addParam voegt CLI-argumenten toe; runSuper breidt ingebouwde taken uit.
  • Subtaken combineren interne stappen die met hre.run kunnen worden aangeroepen.
Gratis beginnen

Leer De basis van Web3- en DApp-ontwikkeling met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
29
Lessen
105

Veelgestelde vragen

Is de les “Scripts en taken” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad De basis van Web3- en DApp-ontwikkeling, waaronder “Scripts en taken”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus De basis van Web3- en DApp-ontwikkeling bevat in totaal 4 lessen.

Wat leer ik in “Scripts en taken”?

Workflows automatiseren Je oefent met De basis van Web3- en DApp-ontwikkeling door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met De basis van Web3- en DApp-ontwikkeling te beginnen?

Ervaring vooraf is niet nodig. De basis van Web3- en DApp-ontwikkeling op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Scripts en taken”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over De basis van Web3- en DApp-ontwikkeling?

Ja. Elke les over De basis van Web3- en DApp-ontwikkeling bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Hardhat instellen
  2. Contracten compileren
  3. Scripts en taken
  4. Lokaal netwerk en forking
← Terug naar De basis van Web3- en DApp-ontwikkeling