diff --git a/scripts/prompt.js b/scripts/prompt.js index 3f35699..c89a855 100644 --- a/scripts/prompt.js +++ b/scripts/prompt.js @@ -24,6 +24,10 @@ function TEMPLATES(message) { title: 'Node.js - Typescript/ESM', value: 'node-ts' }, + { + title: 'Node.js - JSDoc/ESM', + value: 'node-esm' + }, { title: 'Node.js - CommonJS', value: 'node' diff --git a/scripts/utils.js b/scripts/utils.js index 2e9f1ef..22372ae 100644 --- a/scripts/utils.js +++ b/scripts/utils.js @@ -49,6 +49,10 @@ export function getCommandsFor({ targetDir, template }) { case 'node-ts': commands.push('npm i', 'npm start'); break; + + case 'node-esm': + commands.push('npm i', 'npm start'); + break; case 'plugin': commands.push('bun i', 'bun run dev'); diff --git a/template-node-esm/.gitignore b/template-node-esm/.gitignore new file mode 100644 index 0000000..bb314e7 --- /dev/null +++ b/template-node-esm/.gitignore @@ -0,0 +1,5 @@ +.DS_Store +.env +package-lock.json + +node_modules/ diff --git a/template-node-esm/README.md b/template-node-esm/README.md new file mode 100644 index 0000000..ad78259 --- /dev/null +++ b/template-node-esm/README.md @@ -0,0 +1,14 @@ +# $PROJECT_NAME$ + +# Setup + +Follow these steps to run [Elysia.js](https://elysiajs.com) under [Node.js](https://nodejs.org): + +1. Install dependencies + ```bash + npm i + ``` +2. You're ready to go. Checkout the scripts inside [package.json](./package.json)! + ```bash + npm start + ``` diff --git a/template-node-esm/gitignore b/template-node-esm/gitignore new file mode 100644 index 0000000..bb314e7 --- /dev/null +++ b/template-node-esm/gitignore @@ -0,0 +1,5 @@ +.DS_Store +.env +package-lock.json + +node_modules/ diff --git a/template-node-esm/jsconfig.json b/template-node-esm/jsconfig.json new file mode 100644 index 0000000..1a4fec8 --- /dev/null +++ b/template-node-esm/jsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "module": "esnext", + "target": "esnext", + "moduleResolution": "node", + "allowJs": true, + "checkJs": true, + "noImplicitAny": true, + "esModuleInterop": true, + "isolatedModules": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true + }, + "include": ["main.js", "src/**/*.js"], + "exclude": ["node_modules/**"] +} diff --git a/template-node-esm/main.js b/template-node-esm/main.js new file mode 100644 index 0000000..aaab4ee --- /dev/null +++ b/template-node-esm/main.js @@ -0,0 +1,10 @@ +import '@bogeychan/elysia-polyfills/node/index.js'; +import { Elysia } from 'elysia'; + +const app = new Elysia() + .get('/', () => ({ hello: 'Node.js👋' })) + .listen(8080); + +console.log( + `🦊 Elysia is running at http://localhost:${app.server?.port}` +); diff --git a/template-node-esm/package.json b/template-node-esm/package.json new file mode 100644 index 0000000..b0e756e --- /dev/null +++ b/template-node-esm/package.json @@ -0,0 +1,14 @@ +{ + "name": "$PROJECT_NAME$", + "private": true, + "type": "module", + "scripts": { + "start": "node ./main.js" + }, + "dependencies": { + "@bogeychan/elysia-polyfills": "^0.6.1", + "@sinclair/typebox": "^0.31.15", + "elysia": "^0.7.12" + } +} + \ No newline at end of file diff --git a/types.d.ts b/types.d.ts index f5145ad..4740a34 100644 --- a/types.d.ts +++ b/types.d.ts @@ -1,3 +1,3 @@ -declare type Template = 'bun' | 'deno' | 'node-ts' | 'node' | 'plugin'; +declare type Template = 'bun' | 'deno' | 'node-ts' | 'node-esm' | 'node' | 'plugin'; declare type Options = { template: Template; targetDir: string };