UNPKG

@avleon/cli

Version:
157 lines (145 loc) 4.96 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createApplication = createApplication; const fs_extra_1 = __importDefault(require("fs-extra")); const paths_1 = require("./paths"); const prettier = __importStar(require("prettier")); const win32_1 = __importDefault(require("path/win32")); async function createApplication(fname) { const appPaths = (0, paths_1.appPaths)(fname); const dirs = Object.values(appPaths); for (let i = 0; i < dirs.length; i++) { await fs_extra_1.default.ensureDir(dirs[i]); } await fs_extra_1.default.ensureDir(appPaths.root + "/public"); // copy // const mainFunc = ` import { Builder, env } from "@avleon/core"; // create builder const builder = Builder.createAppBuilder(); // registering all services and dependencies here // builder.addDataSource({ // type: "better-sqlite3", // database: path.join(process.cwd(), "mydb.db"), // entities: [Category, Product], // synchronize: true, // }); // build app const app = builder.build(); app.useSwagger({ info: { title: "${fname}", description: "Your description here", version: "0.0.1", }, servers: [ { url: "http://localhost:"+env.PORT, description: "Development", }, }); app.mapGet('/', ()=> "Welcome"); app.listen(env.PORT); `; const formatMainFunc = await prettier.format(mainFunc, { singleQuote: true, singleAttributePerLine: true, parser: "typescript", }); await fs_extra_1.default.writeFile(win32_1.default.join(appPaths.src, 'app.ts'), formatMainFunc); // create package.json const packageJson = ` { "name": "${fname}", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "dev": "nodemon src/app.ts", "start": "node dist/app.js", "build": "rimraf dist && tsc" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "class-transformer": "^0.5.1", "class-validator": "^0.14.1", "reflect-metadata": "^0.2.2" }, "devDependencies": { "nodemon": "^3.1.7", "ts-node": "^10.9.2", "typescript": "^5.7.2" } } `; const formattedPackageJson = await prettier.format(packageJson, { parser: "json", }); await fs_extra_1.default.writeFile(win32_1.default.join(appPaths.root, 'package.json'), formattedPackageJson); const tsconfigJson = await prettier.format(`{ "compilerOptions": { "target": "ES2017", "module": "CommonJS", "moduleResolution": "node", "experimentalDecorators": true, "emitDecoratorMetadata": true, "outDir": "./dist", "esModuleInterop": true, "allowSyntheticDefaultImports": true, "forceConsistentCasingInFileNames": true, "skipLibCheck": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"] }`, { parser: 'json' }); await fs_extra_1.default.writeFile(win32_1.default.join(appPaths.root, 'tsconfig.json'), tsconfigJson); await fs_extra_1.default.writeFile(win32_1.default.join(appPaths.root, '.gitignore'), `node_modules/\ndist/\n.env`); // create basic service // create basic controller console.info("Running pnpm install"); console.log(`cd ${fname}&& pnpm install`); //execSync(`cd ${fname}&& pnpm install && pnpm add @avleon/core`, { stdio: 'inherit' }) console.info("App create successfully."); }