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>
111 lines (106 loc) • 3.54 kB
text/typescript
import path from "path";
import fs from "fs";
export const generatePackageDotJson = (
projectName,
isEVM,
testnet,
useBackend,
backendProvider,
hasSmartContract,
chain,
contractName?
) => {
const packageJsonTemplate = {
name: projectName,
version: "0.1.0",
private: true,
scripts: {},
dependencies: {},
devDependencies: {},
};
// const frontEndPackageJson = JSON.parse(JSON.stringify(packageJsonTemplate));
// frontEndPackageJson["scripts"]["dev"] = "next dev";
// frontEndPackageJson["scripts"]["build"] = "next build";
// frontEndPackageJson["scripts"]["start"] = "next start";
// frontEndPackageJson["scripts"]["lint"] = "next lint";
// frontEndPackageJson["scripts"]["marketplace"] =
// "npx create-web3-dapp marketplace";
// frontEndPackageJson["dependencies"]["next"] = "13.1.2";
// frontEndPackageJson["dependencies"]["react"] = "18.2.0";
// frontEndPackageJson["dependencies"]["react-dom"] = "18.2.0";
// frontEndPackageJson["devDependencies"]["eslint"] = "8.42.0";
// frontEndPackageJson["devDependencies"]["eslint-config-next"] = "13.4.4";
// frontEndPackageJson["dependencies"]["alchemy-sdk"] = "^2.6.2";
// frontEndPackageJson["dependencies"]["@rainbow-me/rainbowkit"] = "^0.12.4";
// frontEndPackageJson["dependencies"]["wagmi"] = "^0.12.6";
// if (isTypescript) {
// frontEndPackageJson["dependencies"]["typescript"] = "5.1.3";
// frontEndPackageJson["dependencies"]["@types/node"] = "20.2.5";
// frontEndPackageJson["dependencies"]["@types/react"] = "18.2.9";
// frontEndPackageJson["dependencies"]["@types/react-dom"] = "18.2.4";
// }
// if (useBackend) {
// fs.writeFileSync(
// path.join("frontend", "package.json"),
// JSON.stringify(frontEndPackageJson, null, "\t")
// );
// } else {
// fs.writeFileSync(
// "package.json",
// JSON.stringify(frontEndPackageJson, null, "\t")
// );
// }
if (useBackend) {
const backendPackageJson = JSON.parse(
JSON.stringify(packageJsonTemplate)
);
switch (backendProvider) {
case "hardhat-template":
case "hardhat":
backendPackageJson["devDependencies"][
"@nomicfoundation/hardhat-toolbox"
] = "^1.0.2";
backendPackageJson["devDependencies"]["hardhat"] = "^2.10.1";
backendPackageJson["dependencies"]["dotenv"] = "^16.0.2";
backendPackageJson["scripts"]["build"] = "npx hardhat compile";
if (hasSmartContract)
backendPackageJson["scripts"][
"deploy-testnet"
] = `npx hardhat run ./scripts/${
hasSmartContract
? `${contractName}_deploy.js`
: "deploy.js"
} --network ${testnet}`;
backendPackageJson["scripts"][
"deploy"
] = `npx hardhat run ./scripts/${
hasSmartContract ? `${contractName}_deploy.js` : "deploy.js"
} --network ${chain}`;
backendPackageJson["scripts"]["node"] = `npx hardhat node`;
backendPackageJson["scripts"][
"deploy-local"
] = `npx hardhat run ./scripts/${
hasSmartContract ? `${contractName}_deploy.js` : "deploy.js"
} --network localhost`;
break;
case "foundry":
backendPackageJson["devDependencies"][
"@nomicfoundation/hardhat-toolbox"
] = "^1.0.2";
backendPackageJson["devDependencies"]["@hardhat"] = "^2.10.1";
break;
case "anchor":
break;
default:
break;
}
if (hasSmartContract) {
backendPackageJson["dependencies"]["@openzeppelin/contracts"] =
"^4.7.3";
}
fs.writeFileSync(
path.join(process.cwd(), "backend", "package.json"),
JSON.stringify(backendPackageJson, null, "\t")
);
}
};