create-elysiajs
Version:
Scaffolding your Elysia project with the environment with easy!
132 lines (131 loc) • 6.4 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPackageJson = getPackageJson;
const deps_1 = require("../deps");
const utils_1 = require("../utils");
function getPackageJson({ dir, projectName, linter, packageManager, orm, driver, others, plugins, isMonorepo, locks, redis, mockWithPGLite, telegramRelated, s3Client, }) {
const sample = {
name: projectName,
type: "module",
scripts: {
dev: packageManager === "bun"
? "bun --watch src/index.ts"
: `${utils_1.pmExecuteMap[packageManager]} tsx watch --env-file .env src/index.ts`,
start: packageManager === "bun"
? "NODE_ENV=production bun run ./src/index.ts"
: `NODE_ENV=production ${utils_1.pmExecuteMap[packageManager]} tsx --env-file=.env --env-file=.env.production src/index.ts`,
},
dependencies: {
elysia: deps_1.dependencies.elysia,
"env-var": deps_1.dependencies["env-var"],
},
devDependencies: {
typescript: deps_1.dependencies.typescript,
},
};
// if (packageManager === "bun")
sample.devDependencies["@types/bun"] = deps_1.dependencies["@types/bun"];
if (linter === "Biome") {
sample.scripts.lint = `${utils_1.pmExecuteMap[packageManager]} @biomejs/biome check src`;
sample.scripts["lint:fix"] = `${utils_1.pmRunMap[packageManager]} lint --write`;
sample.devDependencies["@biomejs/biome"] = deps_1.dependencies["@biomejs/biome"];
}
if (linter === "ESLint") {
// \"src/**/*.ts\"
sample.scripts.lint = `${utils_1.pmExecuteMap[packageManager]} eslint`;
// \"src/**/*.ts\"
sample.scripts["lint:fix"] = `${utils_1.pmExecuteMap[packageManager]} eslint --fix`;
sample.devDependencies.eslint = deps_1.dependencies.eslint;
sample.devDependencies["@antfu/eslint-config"] =
deps_1.dependencies["@antfu/eslint-config"];
if (orm === "Drizzle")
sample.devDependencies["eslint-plugin-drizzle"] =
deps_1.dependencies["eslint-plugin-drizzle"];
}
if (orm === "Prisma") {
sample.devDependencies.prisma = deps_1.dependencies.prisma;
sample.dependencies["@prisma/client"] = deps_1.dependencies["@prisma/client"];
}
if (orm === "Drizzle") {
sample.dependencies["drizzle-orm"] = deps_1.dependencies["drizzle-orm"];
sample.devDependencies["drizzle-kit"] = deps_1.dependencies["drizzle-kit"];
if (driver === "node-postgres") {
sample.dependencies.pg = deps_1.dependencies.pg;
sample.devDependencies["@types/pg"] = deps_1.dependencies["@types/pg"];
}
if (driver === "Postgres.JS") {
sample.dependencies.postgres = deps_1.dependencies.postgres;
}
if (driver === "MySQL 2") {
sample.dependencies.mysql2 = deps_1.dependencies.mysql2;
}
sample.scripts.generate = `${utils_1.pmExecuteMap[packageManager]} drizzle-kit generate`;
sample.scripts.push = `${utils_1.pmExecuteMap[packageManager]} drizzle-kit push`;
sample.scripts.migrate = `${utils_1.pmExecuteMap[packageManager]} drizzle-kit migrate`;
sample.scripts.studio = `${utils_1.pmExecuteMap[packageManager]} drizzle-kit studio`;
}
if (others.includes("Husky")) {
sample.devDependencies.husky = deps_1.dependencies.husky;
sample.scripts.prepare = "husky";
}
if (plugins.includes("Bearer"))
sample.dependencies["@elysiajs/bearer"] = deps_1.dependencies["@elysiajs/bearer"];
if (plugins.includes("CORS"))
sample.dependencies["@elysiajs/cors"] = deps_1.dependencies["@elysiajs/cors"];
if (plugins.includes("HTML/JSX")) {
sample.dependencies["@elysiajs/html"] = deps_1.dependencies["@elysiajs/html"];
sample.dependencies["@kitajs/ts-html-plugin"] =
deps_1.dependencies["@kitajs/ts-html-plugin"];
}
if (plugins.includes("JWT"))
sample.dependencies["@elysiajs/jwt"] = deps_1.dependencies["@elysiajs/jwt"];
if (plugins.includes("Server Timing"))
sample.dependencies["@elysiajs/server-timing"] =
deps_1.dependencies["@elysiajs/server-timing"];
if (plugins.includes("Static"))
sample.dependencies["@elysiajs/static"] = deps_1.dependencies["@elysiajs/static"];
if (plugins.includes("Swagger"))
sample.dependencies["@elysiajs/swagger"] =
deps_1.dependencies["@elysiajs/swagger"];
if (plugins.includes("Autoload"))
sample.dependencies["elysia-autoload"] = deps_1.dependencies["elysia-autoload"];
if (plugins.includes("Logger"))
sample.dependencies["@bogeychan/elysia-logger"] =
deps_1.dependencies["@bogeychan/elysia-logger"];
if (plugins.includes("Oauth 2.0")) {
sample.dependencies.arctic = deps_1.dependencies.arctic;
sample.dependencies["elysia-oauth2"] = deps_1.dependencies["elysia-oauth2"];
}
if (redis) {
sample.dependencies.ioredis = deps_1.dependencies.ioredis;
if (mockWithPGLite)
sample.devDependencies["ioredis-mock"] = deps_1.dependencies["ioredis-mock"];
}
if (others.includes("Jobify")) {
sample.dependencies.jobify = deps_1.dependencies.jobify;
}
if (others.includes("Posthog")) {
sample.dependencies["posthog-node"] = deps_1.dependencies["posthog-node"];
}
if (locks) {
sample.dependencies["@verrou/core"] = deps_1.dependencies["@verrou/core"];
}
if (isMonorepo)
sample.dependencies["@gramio/init-data"] =
deps_1.dependencies["@gramio/init-data"];
if (others.includes("S3") && s3Client === "@aws-sdk/client-s3") {
sample.dependencies["@aws-sdk/client-s3"] =
deps_1.dependencies["@aws-sdk/client-s3"];
}
if (mockWithPGLite) {
sample.devDependencies["@electric-sql/pglite"] =
deps_1.dependencies["@electric-sql/pglite"];
sample.devDependencies["@elysiajs/eden"] = deps_1.dependencies["@elysiajs/eden"];
}
if (telegramRelated && !isMonorepo) {
sample.dependencies.gramio = deps_1.dependencies.gramio;
sample.dependencies["@gramio/init-data"] =
deps_1.dependencies["@gramio/init-data"];
}
return JSON.stringify(sample, null, 2);
}