Grunderna i Web3- och DApp-utveckling · Lektion

Skript och uppgifter

Automatisera arbetsflöden

Lektion 3 av 413 steg

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

Lä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 localhost

Kö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 accounts

Den visas också under npx hardhat med sin beskrivning, så att teammedlemmar kan hitta den utan att läsa konfigurationen.

npx hardhat accounts

Parametrar 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 via npx hardhat run för engångsjobb.
  • Tasks som definieras med task() blir förstaklasskommandon i CLI:t.
  • HRE tillhandahåller ethers, network och config.
  • addParam lägger till CLI-argument; runSuper utökar inbyggda tasks.
  • Subtasks kombinerar interna steg som kan anropas med hre.run.
Gratis att börja

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

  1. Konfigurera Hardhat
  2. Kompilera kontrakt
  3. Skript och uppgifter
  4. Lokalt nätverk och forking
← Tillbaka till Grunderna i Web3- och DApp-utveckling