Necesito ejecutar un script ts en particular usando hardhat desde la línea de comando pero necesito especificar parámetros... Similar a esto:
npx hardhat run --network rinkeby scripts/task-executor.ts param1 param2 Donde --network rinkeby es el parámetro para la ejecución del casco
Y param1 y param2 son parámetros para el script task-executor.ts .
No pude encontrar ninguna publicación sobre este problema y no puedo hacer que funcione.
También intenté definir una tarea de hardhat y agregué esos parámetros, pero si trato de ejecutarla, obtengo:
Error HH9: Error while loading Hardhat's configuration. You probably tried to import the "hardhat" module from your config or a file imported from it. This is not possible, as Hardhat can't be initialized while its config is being defined. Porque necesito importar hre o ethers desde hardhat en esa tarea en particular.
¿Alguien sabe cómo lograr lo que necesito?
¡¡Muchas gracias!!
Según Hardhat :
Los scripts de Hardhat son útiles para cosas simples que no toman argumentos del usuario y para la integración con herramientas externas que no son adecuadas para la CLI de Hardhat, como un depurador de Node.js.
Para los scripts que requieren parámetros, debe usar Hardhat Tasks .
Puede codificar la tarea en un archivo diferente a hardhat.config.ts . Aquí hay una tarea de ejemplo que usa parámetros posicionales en el archivo sampleTask.ts :
import { task } from "hardhat/config"; task("sampleTask", "A sample task with params") .addPositionalParam("param1") .addPositionalParam("param2") .setAction(async (taskArgs) => { console.log(taskArgs); });Recuerde importarlo dentro de hardhat.config.ts :
import "./tasks/sampleTask";Luego ejecútalo con:
npx hardhat sampleTask hello worldY debería imprimir:
{ param1: 'hello', param2: 'world' }Puede leer más sobre los parámetros con nombre, posicionales y opcionales en las tareas aquí .
Si necesita usar hre o ethers , puede obtener hre del segundo parámetro de la función setAction :
task("sampleTask", "A sample task with params") .addPositionalParam("param1") .addPositionalParam("param2") .setAction(async (taskArgs, hre) => { const ethers = hre.ethers; });Por lo general, funciona así:
const hre = require('hardhat'); const { ethers } = hre;