typechain.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. import { TASK_COMPILE } from "@nomiclabs/buidler/builtin-tasks/task-names";
  2. import { TypeChain } from "typechain/dist/TypeChain";
  3. import { task } from "@nomiclabs/buidler/config";
  4. import { tsGenerator } from "ts-generator";
  5. import { TASK_TYPECHAIN } from "./task-names";
  6. task(TASK_TYPECHAIN, "Generate TypeChain typings for compiled contracts", async function (_taskArgs, { config, run }) {
  7. if (!config.typechain || !config.typechain?.outDir || !config.typechain?.target) {
  8. throw new Error("Invalid TypeChain configuration. Please provide it via buidler.config.ts");
  9. }
  10. await run(TASK_COMPILE);
  11. console.log(
  12. `Creating TypeChain artifacts in directory ${config.typechain.outDir} for target ${config.typechain.target}`,
  13. );
  14. const cwd: string = process.cwd();
  15. await tsGenerator(
  16. { cwd },
  17. new TypeChain({
  18. cwd,
  19. rawConfig: {
  20. files: config.paths.artifacts + "/*.json",
  21. outDir: config.typechain.outDir,
  22. target: config.typechain.target,
  23. },
  24. }),
  25. );
  26. console.log(`Successfully generated TypeChain artifacts!`);
  27. });