Skript og oppgaver
Automatisere arbeidsflyter
Skript og oppgaver er en gratis leksjon i Grunnleggende om Web3- og DApp-utvikling på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Grunnleggende om Web3- og DApp-utvikling, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Grunnleggende om Web3- og DApp-utvikling inneholder totalt 4 leksjoner.
Skript kontra oppgaver
Hardhat tilbyr to måter å automatisere arbeid på:
- Skript — vanlige Node.js-filer som du kjører for enkeltstående jobber, for eksempel distribusjon.
- Oppgaver — gjenbrukbare kommandoer som er integrert i Hardhat CLI, med argumenter og hjelpetekst.
Bruk skript for ad hoc-automatisering og oppgaver for repeterbare kommandoer som teamet bruker om igjen.
Et distribusjonsskript
Skript ligger i scripts/. Et distribusjonsskript bruker ethers fra 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();Kjøre et skript
Kjør et skript gjennom Hardhat, slik at kjøremiljøet og nettverket blir injisert:
npx hardhat run scripts/deploy.jsLegg til --network for å bruke et bestemt nettverk. Uten dette kjører skriptet mot et midlertidig nettverk i prosessen.
npx hardhat run scripts/deploy.js --network localhostKjøremiljøet
Hardhat Runtime Environment (HRE) injiseres automatisk og gir deg:
hre.ethers— hjelpefunksjonene fra ethers.js.hre.network— informasjon om det aktive nettverket.hre.config— den ferdig evaluerte konfigurasjonen.
I oppgaver er HRE det andre argumentet, mens det i skript er hardhat-modulen.
Definere en egendefinert oppgave
Definer oppgaver i hardhat.config.js ved hjelp av hjelpefunksjonen 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);
}
});Kjøre en egendefinert oppgave
Når oppgaven er definert, vises den i CLI-en som en hvilken som helst innebygd kommando:
npx hardhat accountsDen vises også under npx hardhat med beskrivelsen sin, slik at teammedlemmer kan finne den uten å lese konfigurasjonen.
npx hardhat accountsParametere for oppgaver
Oppgaver godtar navngitte parametere 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");
});Kjø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");
});Overstyre innebygde oppgaver
Du kan utvide eksisterende oppgaver som compile ved å bruke samme navn. Bruk runSuper for å kalle den opprinnelige funksjonaliteten:
task("compile", async (args, hre, runSuper) => {
console.log("Before compiling...");
await runSuper(args);
console.log("Done compiling!");
});Dette er nyttig for å legge til logging eller etterbehandling.
task("compile", async (args, hre, runSuper) => {
console.log("Before compiling...");
await runSuper(args);
console.log("Done compiling!");
});Underoppgaver
Underoppgaver er interne oppgaver som ikke vises i hovedlisten over hjelpekommandoer. De lar deg dele komplekse oppgaver opp i gjenbrukbare deler:
const { subtask } = require("hardhat/config");
subtask("print-network", async (args, hre) => {
console.log("Network:", hre.network.name);
});Kall underoppgaver fra andre oppgaver med hre.run("print-network").
const { subtask } = require("hardhat/config");
subtask("print-network", async (args, hre) => {
console.log("Network:", hre.network.name);
});Når bør du bruke hva
Tommelfingerregler:
- Trenger De en rask utrulling eller migrering? Skriv et skript.
- Trenger De en gjenbrukbar kommando med parametere og hjelpetekst? Skriv en task.
- Trenger De å sette sammen interne trinn? Bruk subtasks.
Både skript og tasks har full tilgang til HRE.
Skript i package.json
For enkelhets skyld kan De pakke inn vanlige kommandoer som npm-skript:
{
"scripts": {
"deploy": "hardhat run scripts/deploy.js --network localhost",
"test": "hardhat test"
}
}Deretter kan teammedlemmer kjøre npm run deploy uten å måtte huske flagg.
{
"scripts": {
"deploy": "hardhat run scripts/deploy.js --network localhost",
"test": "hardhat test"
}
}Sjekk kunnskapene
Test forståelsen Deres av skript og tasks.
Oppsummering
De har lært hvordan De automatiserer Hardhat-arbeidsflyter.
- Skript i
scripts/kjøres vianpx hardhat runfor engangsjobber. - Tasks som defineres med
task(), blir førsteklasses CLI-kommandoer. - HRE eksponerer
ethers,networkogconfig. addParamlegger til CLI-argumenter, mensrunSuperutvider innebygde tasks.- Subtasks setter sammen interne trinn som kan kalles med
hre.run.
Lær deg Grunnleggende om Web3- og DApp-utvikling med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 29
- Leksjoner
- 105
Ofte stilte spørsmål
Er leksjonen «Skript og oppgaver» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Grunnleggende om Web3- og DApp-utvikling, inkludert «Skript og oppgaver», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Grunnleggende om Web3- og DApp-utvikling inneholder totalt 4 leksjoner.
Hva lærer jeg i «Skript og oppgaver»?
Automatisere arbeidsflyter Du øver på Grunnleggende om Web3- og DApp-utvikling med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Grunnleggende om Web3- og DApp-utvikling?
Ingen tidligere erfaring er nødvendig. Grunnleggende om Web3- og DApp-utvikling på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Skript og oppgaver»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Grunnleggende om Web3- og DApp-utvikling-leksjonen?
Ja. Alle Grunnleggende om Web3- og DApp-utvikling-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Oppsett av Hardhat
- Kompilere kontrakter
- Skript og oppgaver
- Lokalt nettverk og forgrening