create-types-backend
Version:
A CLI tool to quickly setup an Express.js backend in TypeScript, using essential configurations and user's preferences.
55 lines (47 loc) • 1.76 kB
JavaScript
export const appContent = (answers) => `import express, { type Request, type Response } from "express";
import dotenv from "dotenv";
${answers.useCors ? 'import cors from "cors";' : ""}
${answers.useAuth ? 'import cookieParser from "cookie-parser";' : ""}
${answers.useMongo ? 'import { connectDB } from "@/config/db.js";' : ""}
${answers.useCloudinary ? 'import { v2 as cloudinary } from "cloudinary";' : ""}
import { userRouter } from "@/routes/user.js";
${answers.useErrorHandler ? 'import { errorHandler } from "@/middlewares/error-handler.js";' : ""}
const app = express();
// setup
dotenv.config({ path: ".env" });
${answers.useMongo ? "connectDB();" : ""}
${answers.useCors
? `app.use(
cors({
origin: [\`\${process.env.FRONTEND_URL_DEV}\`, \`\${process.env.FRONTEND_URL_PROD}\`],
methods: ["GET", "POST", "PUT", "DELETE"],
credentials: true,
})
);`
: ""}
${answers.useCloudinary
? `cloudinary.config({
cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
api_key: process.env.CLOUDINARY_API_KEY,
api_secret: process.env.CLOUDINARY_API_SECRET,
});`
: ""}
// middlewares
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
${answers.useAuth ? "app.use(cookieParser());" : ""}
// routes
app.get("/", (_req: Request, res: Response) => {
res.status(200).send("This app was created using npx create-types-backend@latest !");
});
// => ADD YOUR ROUTES HERE <=
app.use("/api/user", userRouter);
${answers.useErrorHandler
? `// custom error handler
app.use(errorHandler);`
: ""}
const PORT = Number(process.env.PORT) || ${answers.portNumber};
app.listen(PORT, () => {
console.log(\`Server is running on http://localhost:\${PORT}\`);
});
`;