Scripts en taken
Workflows automatiseren
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.jsVoeg --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 localhostDe 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 accountsDe taak verschijnt ook onder npx hardhat met de beschrijving, zodat teamleden deze kunnen vinden zonder de configuratie te lezen.
npx hardhat accountsTaakparameters
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 vianpx hardhat runvoor eenmalige taken. - Taken die met
task()zijn gedefinieerd, worden volwaardige CLI-opdrachten. - De HRE stelt
ethers,networkenconfigbeschikbaar. addParamvoegt CLI-argumenten toe;runSuperbreidt ingebouwde taken uit.- Subtaken combineren interne stappen die met
hre.runkunnen worden aangeroepen.
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
- Hardhat instellen
- Contracten compileren
- Scripts en taken
- Lokaal netwerk en forking