Skript och uppgifter
Automatisera arbetsflöden
Skript och uppgifter är en gratis lektion i Grunderna i Web3- och DApp-utveckling på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Grunderna i Web3- och DApp-utveckling, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Grunderna i Web3- och DApp-utveckling innehåller totalt 4 lektioner.
Skript kontra uppgifter
Hardhat erbjuder två sätt att automatisera arbete:
- Skript — vanliga Node.js-filer som Du kör för enstaka jobb, till exempel distribution.
- Uppgifter — återanvändbara kommandon som är integrerade i Hardhat CLI och har argument och hjälptext.
Använd skript för tillfällig automatisering och uppgifter för återkommande kommandon som teamet återanvänder.
Ett distributionsskript
Skript finns i scripts/. Ett distributionsskript använder ethers från 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();Köra ett skript
Kör ett skript genom Hardhat så att det injicerar körmiljön och nätverket:
npx hardhat run scripts/deploy.jsLägg till --network för att välja ett specifikt nätverk. Utan det körs skriptet mot ett tillfälligt nätverk i processen.
npx hardhat run scripts/deploy.js --network localhostKörmiljön
Hardhat Runtime Environment (HRE) injiceras automatiskt och ger Dig:
hre.ethers— hjälpfunktionerna från ethers.js.hre.network— information om det aktiva nätverket.hre.config— den slutgiltiga konfigurationen.
I uppgifter är HRE det andra argumentet; i skript är det modulen hardhat.
Definiera en anpassad uppgift
Definiera uppgifter i hardhat.config.js med hjälp av hjälpfunktionen 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);
}
});Köra en anpassad uppgift
När uppgiften har definierats visas den i CLI:t som vilket inbyggt kommando som helst:
npx hardhat accountsDen visas också under npx hardhat med sin beskrivning, så att teammedlemmar kan hitta den utan att läsa konfigurationen.
npx hardhat accountsParametrar för uppgifter
Uppgifter accepterar namngivna parametrar med 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");
});Kör den med 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");
});Åsidosätta inbyggda uppgifter
Du kan utöka befintliga uppgifter som compile genom att använda samma namn. Använd runSuper för att anropa det ursprungliga beteendet:
task("compile", async (args, hre, runSuper) => {
console.log("Before compiling...");
await runSuper(args);
console.log("Done compiling!");
});Detta är praktiskt när Du vill lägga till loggning eller efterbearbetningssteg.
task("compile", async (args, hre, runSuper) => {
console.log("Before compiling...");
await runSuper(args);
console.log("Done compiling!");
});Underuppgifter
Underuppgifter är interna uppgifter som inte visas i huvudlistan över hjälpkommandon. De låter Dig dela upp komplexa uppgifter i återanvändbara delar:
const { subtask } = require("hardhat/config");
subtask("print-network", async (args, hre) => {
console.log("Network:", hre.network.name);
});Anropa underuppgifter från andra uppgifter med hre.run("print-network").
const { subtask } = require("hardhat/config");
subtask("print-network", async (args, hre) => {
console.log("Network:", hre.network.name);
});När Du ska använda de olika alternativen
Tumregler:
- Behöver Ni en snabb driftsättning eller migrering? Skriv ett script.
- Behöver Ni ett återanvändbart kommando med parametrar och hjälptext? Skriv en task.
- Behöver Ni kombinera interna steg? Använd subtasks.
Både script och tasks har full åtkomst till HRE.
Script i package.json
För enkelhetens skull kan Ni paketera vanliga kommandon som npm-script:
{
"scripts": {
"deploy": "hardhat run scripts/deploy.js --network localhost",
"test": "hardhat test"
}
}Därefter kan teammedlemmar köra npm run deploy utan att behöva memorera flaggor.
{
"scripts": {
"deploy": "hardhat run scripts/deploy.js --network localhost",
"test": "hardhat test"
}
}Snabbtest
Testa Er förståelse av script och tasks.
Sammanfattning
Ni har lärt Er att automatisera Hardhat-arbetsflöden.
- Script i
scripts/körs vianpx hardhat runför engångsjobb. - Tasks som definieras med
task()blir förstaklasskommandon i CLI:t. - HRE tillhandahåller
ethers,networkochconfig. addParamlägger till CLI-argument;runSuperutökar inbyggda tasks.- Subtasks kombinerar interna steg som kan anropas med
hre.run.
Lär dig Grunderna i Web3- och DApp-utveckling med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 29
- Lektioner
- 105
Vanliga frågor
Är lektionen ”Skript och uppgifter” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i Web3- och DApp-utveckling, inklusive ”Skript och uppgifter”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Grunderna i Web3- och DApp-utveckling innehåller totalt 4 lektioner.
Vad lär jag mig i ”Skript och uppgifter”?
Automatisera arbetsflöden Ni övar på Grunderna i Web3- och DApp-utveckling med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Grunderna i Web3- och DApp-utveckling?
Du behöver inga förkunskaper. Utbildningen i Grunderna i Web3- och DApp-utveckling på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Skript och uppgifter”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Grunderna i Web3- och DApp-utveckling-lektionen?
Ja. Varje Grunderna i Web3- och DApp-utveckling-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Konfigurera Hardhat
- Kompilera kontrakt
- Skript och uppgifter
- Lokalt nätverk och forking