Skip to content

Commit b16ecb0

Browse files
committed
feat: add node template
1 parent dcda8f7 commit b16ecb0

12 files changed

Lines changed: 119 additions & 15 deletions

File tree

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,15 @@ pnpm create @tomjs/app --template vue
5050

5151
Parameters:
5252

53-
- `-t --template` : specify the template, optional values: `vue` , `react`
53+
- `-t --template` : specify the template
5454

5555
Support templates:
5656

5757
- vue
58-
- electron-vue
5958
- react
59+
- electron-vue
6060
- electron-react
61+
- node
6162

6263
## Reference project
6364

README.zh_CN.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,15 @@ pnpm create @tomjs/app my-app --template vue
5151

5252
参数说明:
5353

54-
- `-t --template`:指定模板,可选值:`vue``react`
54+
- `-t --template`:指定模板
5555

5656
支持模板:
5757

5858
- vue
59-
- electron-vue
6059
- react
60+
- electron-vue
6161
- electron-react
62+
- node
6263

6364
## 参考项目
6465

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
"prepublishOnly": "npm run build && np --any-branch --no-yarn --yolo --no-publish --message \"chore: release v%s\""
4343
},
4444
"dependencies": {
45-
"cross-spawn": "^7.0.3",
4645
"kolorist": "^1.8.0",
4746
"minimist": "^1.2.8",
4847
"prompts": "^2.4.2"
@@ -62,7 +61,7 @@
6261
"np": "^8.0.4",
6362
"npm-run-all": "^4.1.5",
6463
"prettier": "^3.1.0",
65-
"tsup": "^7.3.0",
64+
"tsup": "^8.0.1",
6665
"typescript": "^5.2.2"
6766
}
6867
}

pnpm-lock.yaml

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/index.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ type Framework = {
2727
name: string;
2828
display: string;
2929
color: ColorFunc;
30-
variants: FrameworkVariant[];
30+
variants?: FrameworkVariant[];
3131
};
3232

3333
type FrameworkVariant = {
@@ -81,6 +81,11 @@ const FRAMEWORKS: Framework[] = [
8181
},
8282
],
8383
},
84+
{
85+
name: 'node',
86+
display: 'Node',
87+
color: blue,
88+
},
8489
];
8590

8691
const TEMPLATES = FRAMEWORKS.map(
@@ -162,7 +167,7 @@ async function run() {
162167
name: 'variant',
163168
message: reset('Select a variant:'),
164169
choices: (framework: Framework) =>
165-
framework.variants.map(variant => {
170+
framework?.variants?.map(variant => {
166171
const variantColor = variant.color;
167172
return {
168173
title: variantColor(variant.display || variant.name),
@@ -199,11 +204,16 @@ async function run() {
199204

200205
const templateDir = getTemplateDir(template);
201206

207+
const isNode = template.includes('node');
202208
// copy template files
203209
[templateDir, getTemplateDir('config')].forEach(dir => {
204210
const files = fs.readdirSync(dir);
211+
205212
for (const file of files) {
206213
const destFile = renameFiles[file] ?? file;
214+
if (isNode && file.includes('stylelint')) {
215+
return;
216+
}
207217

208218
const targetPath = path.join(root, destFile);
209219
copy(path.join(dir, file), targetPath);

template-node/.eslintrc.cjs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module.exports = {
2+
env: {
3+
node: true,
4+
es6: true,
5+
},
6+
extends: [require.resolve('@tomjs/eslint/typescript')],
7+
};

template-node/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# node
2+
3+
Basic node templates

template-node/_lintstagedrc.cjs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module.exports = {
2+
'*.{js,cjs,ts}': ['eslint --fix', 'prettier --write'],
3+
'*.{json,md}': ['prettier --write'],
4+
};

template-node/package.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"name": "template-node",
3+
"version": "0.0.0",
4+
"description": "basic node template",
5+
"type": "module",
6+
"engines": {
7+
"node": ">=18"
8+
},
9+
"main": "./dist/index.cjs",
10+
"module": "./dist/index.js",
11+
"types": "./dist/index.d.ts",
12+
"exports": {
13+
".": {
14+
"require": "./dist/index.cjs",
15+
"import": "./dist/index.js",
16+
"types": "./dist/index.d.ts"
17+
}
18+
},
19+
"scripts": {
20+
"dev": "tsup --watch",
21+
"start": "tsx ./src/index.ts",
22+
"build": "tsup --minify",
23+
"lint": "run-s lint:eslint lint:prettier",
24+
"lint:eslint": "eslint \"src/**/*.ts\" *.{js,cjs,ts} --fix --cache",
25+
"lint:prettier": "prettier --write .",
26+
"prepare": "husky install"
27+
},
28+
"dependencies": {
29+
"kolorist": "^1.8.0"
30+
},
31+
"devDependencies": {
32+
"@commitlint/cli": "^18.4.2",
33+
"@tomjs/commitlint": "^2.0.3",
34+
"@tomjs/eslint": "^1.0.7",
35+
"@tomjs/prettier": "^1.0.5",
36+
"@tomjs/tsconfig": "^1.0.7",
37+
"@types/node": "^18.18.11",
38+
"eslint": "^8.53.0",
39+
"husky": "^8.0.3",
40+
"lint-staged": "^15.1.0",
41+
"npm-run-all": "^4.1.5",
42+
"prettier": "^3.1.0",
43+
"tsup": "^8.0.1",
44+
"tsx": "^4.2.0",
45+
"typescript": "^5.2.2"
46+
}
47+
}

template-node/src/index.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import os from 'node:os';
2+
import { blue } from 'kolorist';
3+
4+
function run() {
5+
console.log(blue('Hello World!'));
6+
console.log(
7+
`system: ${os.platform()} ${os.arch()} v${os.release()} ${os.cpus().length} cores ${Math.ceil(
8+
os.totalmem() / 1024 / 1024 / 1024,
9+
)}GB`,
10+
);
11+
console.log(`node: ${process.version} ${process.arch}`);
12+
}
13+
14+
run();

0 commit comments

Comments
 (0)