Grunnleggende om Web3- og DApp-utvikling · leksjon

Skript og oppgaver

Automatisere arbeidsflyter

Leksjon 3 av 413 trinn

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.js

Legg 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 localhost

Kjø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 accounts

Den vises også under npx hardhat med beskrivelsen sin, slik at teammedlemmer kan finne den uten å lese konfigurasjonen.

npx hardhat accounts

Parametere 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 via npx hardhat run for engangsjobber.
  • Tasks som defineres med task(), blir førsteklasses CLI-kommandoer.
  • HRE eksponerer ethers, network og config.
  • addParam legger til CLI-argumenter, mens runSuper utvider innebygde tasks.
  • Subtasks setter sammen interne trinn som kan kalles med hre.run.
Gratis å komme i gang

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

  1. Oppsett av Hardhat
  2. Kompilere kontrakter
  3. Skript og oppgaver
  4. Lokalt nettverk og forgrening
← Tilbake til Grunnleggende om Web3- og DApp-utvikling