init project
This commit is contained in:
+44
@@ -0,0 +1,44 @@
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
export function writeExpressApiTemplate(targetDir, name) {
|
||||
fs.mkdirSync(path.join(targetDir, 'routes'), { recursive: true });
|
||||
fs.writeFileSync(path.join(targetDir, 'package.json'), `${JSON.stringify({
|
||||
name,
|
||||
version: '0.1.0',
|
||||
private: true,
|
||||
type: 'module',
|
||||
scripts: {
|
||||
dev: 'node --watch index.js',
|
||||
start: 'node index.js',
|
||||
test: 'echo "no tests yet" && exit 0',
|
||||
},
|
||||
dependencies: {
|
||||
express: '^5.0.0',
|
||||
},
|
||||
}, null, 2)}\n`);
|
||||
fs.writeFileSync(path.join(targetDir, 'index.js'), `import express from 'express';
|
||||
import healthRouter from './routes/health.js';
|
||||
|
||||
const app = express();
|
||||
app.use(express.json());
|
||||
app.use('/api/health', healthRouter);
|
||||
|
||||
const port = process.env.PORT ?? 3000;
|
||||
app.listen(port, () => {
|
||||
console.log(\`${name} listening on http://localhost:\${port}\`);
|
||||
});
|
||||
`);
|
||||
fs.writeFileSync(path.join(targetDir, 'routes', 'health.js'), `import { Router } from 'express';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.get('/', (_req, res) => {
|
||||
res.json({ status: 'ok' });
|
||||
});
|
||||
|
||||
export default router;
|
||||
`);
|
||||
fs.writeFileSync(path.join(targetDir, '.gitignore'), 'node_modules/\n');
|
||||
return targetDir;
|
||||
}
|
||||
//# sourceMappingURL=expressApi.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"expressApi.js","sourceRoot":"","sources":["../../../../src/tools/scaffold/templates/expressApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,uBAAuB,CAAC,SAAiB,EAAE,IAAY;IACrE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAElE,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EACpC,GAAG,IAAI,CAAC,SAAS,CACf;QACE,IAAI;QACJ,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,GAAG,EAAE,uBAAuB;YAC5B,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,+BAA+B;SACtC;QACD,YAAY,EAAE;YACZ,OAAO,EAAE,QAAQ;SAClB;KACF,EACD,IAAI,EACJ,CAAC,CACF,IAAI,CACN,CAAC;IAEF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAChC;;;;;;;;;kBASc,IAAI;;CAErB,CACE,CAAC;IAEF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,EAC3C;;;;;;;;;CASH,CACE,CAAC;IAEF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAExE,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
export function writeStaticHtmlTemplate(targetDir, name) {
|
||||
fs.mkdirSync(targetDir, { recursive: true });
|
||||
fs.writeFileSync(path.join(targetDir, 'index.html'), `<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>${name}</title>
|
||||
<link rel="stylesheet" href="style.css" />
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
<h1>${name}</h1>
|
||||
<p>Edit <code>index.html</code>, <code>style.css</code>, and <code>script.js</code> to get started.</p>
|
||||
</main>
|
||||
<script src="script.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
`);
|
||||
fs.writeFileSync(path.join(targetDir, 'style.css'), `:root {
|
||||
color-scheme: light dark;
|
||||
font-family: system-ui, sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
main {
|
||||
max-width: 40rem;
|
||||
padding: 2rem;
|
||||
text-align: center;
|
||||
}
|
||||
`);
|
||||
fs.writeFileSync(path.join(targetDir, 'script.js'), `// Entry point for ${name}.
|
||||
console.log('${name} loaded');
|
||||
`);
|
||||
return targetDir;
|
||||
}
|
||||
//# sourceMappingURL=staticHtml.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"staticHtml.js","sourceRoot":"","sources":["../../../../src/tools/scaffold/templates/staticHtml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,uBAAuB,CAAC,SAAiB,EAAE,IAAY;IACrE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAClC;;;;;aAKS,IAAI;;;;;YAKL,IAAI;;;;;;CAMf,CACE,CAAC;IAEF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EACjC;;;;;;;;;;;;;;;;;CAiBH,CACE,CAAC;IAEF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EACjC,sBAAsB,IAAI;eACf,IAAI;CAClB,CACE,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
||||
Reference in New Issue
Block a user