create-web3-dapp-dev
Version:
<p align="center"> <br /> <a href="https://createweb3dapp.alchemy.com"> <img src=".github/images/cw3d-logo.png" width="200" alt=""/></a> <br /> </p>
64 lines (58 loc) • 1.68 kB
text/typescript
import path from "path";
import { createEnv } from "../utils/createEnv.js";
import fse from "fs-extra";
import { DappInfo } from "../../interfaces/DappInfo.js";
import { createWriteStream, mkdirSync } from "fs";
import { generateAlchemyURL } from "../utils/generateAlchemyUrl.js";
import { execSync } from "child_process";
export const setUpHardhat = (dappInfo: DappInfo, projectPath) => {
if (
!dappInfo.isTemplate ||
dappInfo.backendProvider != "hardhat-template"
) {
mkdirSync(path.join(process.cwd(), "backend"));
mkdirSync(path.join(process.cwd(), "backend", "contracts"));
mkdirSync(path.join(process.cwd(), "backend", "scripts"));
mkdirSync(path.join(process.cwd(), "backend", "test"));
}
const writeStream = createWriteStream(
path.join(projectPath, "backend", "hardhat.config.js")
);
writeStream.write("require('@nomicfoundation/hardhat-toolbox');\n");
writeStream.write("require('dotenv').config()\n\n");
const modules = {
solidity: {
version: "0.8.9",
settings: {
optimizer: {
enabled: true,
},
},
},
allowUnlimitedContractSize: true,
networks: {
hardhat: {},
[dappInfo.chain!]: {
accounts: "[`${process.env.PRIVATE_KEY}`]",
url: generateAlchemyURL(dappInfo.chain),
},
[dappInfo.testnet]: {
accounts: "[`${process.env.PRIVATE_KEY}`]",
url: generateAlchemyURL(dappInfo.testnet),
},
},
etherscan: {
apiKey: "`${process.env.ETHERSCAN_API_KEY}`",
},
paths: {
artifacts: "'../fronted/artifacts'",
},
};
writeStream.write(
`module.exports = ${JSON.stringify(modules, null, "\t").replace(
/"(?!\d\.\d\.\d)([^",]+)"/g,
"$1"
)}`
);
writeStream.close();
};