create-skweb 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +17 -0
- package/.turbo/turbo-check.log +4 -0
- package/.turbo/turbo-lint.log +4 -0
- package/.turbo/turbo-test.log +65 -0
- package/CHANGELOG.md +7 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +199 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.cjs +115 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +102 -0
- package/dist/index.js.map +1 -0
- package/package.json +54 -0
- package/rollup.config.mjs +71 -0
- package/src/cli.ts +118 -0
- package/src/index.ts +122 -0
- package/templates/cjs/ecosystem.config.js +32 -0
- package/templates/cjs/eslint.config.js +25 -0
- package/templates/cjs/package.json +46 -0
- package/templates/cjs/src/app.js +91 -0
- package/templates/cjs/src/commands/migrate.js +35 -0
- package/templates/cjs/src/commands/seed.js +58 -0
- package/templates/cjs/src/controllers/hello.js +33 -0
- package/templates/cjs/src/controllers/user.js +101 -0
- package/templates/cjs/src/cronActions/cleanup.js +12 -0
- package/templates/cjs/src/cronWorker.js +85 -0
- package/templates/cjs/src/index.js +7 -0
- package/templates/cjs/src/models/SysUser.js +38 -0
- package/templates/cjs/src/seeds/SysUser.json +1 -0
- package/templates/cjs/src/services/database.js +15 -0
- package/templates/cjs/src/utils/config.js +65 -0
- package/templates/cjs/src/utils/logger.js +53 -0
- package/templates/cjs/test/index.js +13 -0
- package/templates/mjs/ecosystem.config.js +32 -0
- package/templates/mjs/eslint.config.js +25 -0
- package/templates/mjs/package.json +46 -0
- package/templates/mjs/src/app.js +97 -0
- package/templates/mjs/src/commands/migrate.js +38 -0
- package/templates/mjs/src/commands/seed.js +63 -0
- package/templates/mjs/src/controllers/hello.js +33 -0
- package/templates/mjs/src/controllers/user.js +101 -0
- package/templates/mjs/src/cronActions/cleanup.js +9 -0
- package/templates/mjs/src/cronWorker.js +91 -0
- package/templates/mjs/src/index.js +8 -0
- package/templates/mjs/src/models/SysUser.js +40 -0
- package/templates/mjs/src/seeds/SysUser.json +1 -0
- package/templates/mjs/src/services/database.js +16 -0
- package/templates/mjs/src/utils/config.js +63 -0
- package/templates/mjs/src/utils/logger.js +52 -0
- package/templates/mjs/test/index.mjs +13 -0
- package/templates/ts/ecosystem.config.js +36 -0
- package/templates/ts/eslint.config.js +17 -0
- package/templates/ts/package.json +57 -0
- package/templates/ts/rollup.config.mjs +39 -0
- package/templates/ts/src/app.ts +96 -0
- package/templates/ts/src/commands/migrate.ts +38 -0
- package/templates/ts/src/commands/seed.ts +63 -0
- package/templates/ts/src/controllers/hello.ts +33 -0
- package/templates/ts/src/controllers/user.ts +101 -0
- package/templates/ts/src/cronActions/cleanup.ts +10 -0
- package/templates/ts/src/cronWorker.ts +90 -0
- package/templates/ts/src/index.ts +8 -0
- package/templates/ts/src/models/SysUser.ts +49 -0
- package/templates/ts/src/seeds/SysUser.json +1 -0
- package/templates/ts/src/services/database.ts +16 -0
- package/templates/ts/src/utils/config.ts +68 -0
- package/templates/ts/src/utils/logger.ts +63 -0
- package/templates/ts/test/index.mjs +13 -0
- package/templates/ts/tsconfig.json +20 -0
- package/test/index.mjs +137 -0
- package/tsconfig.json +22 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
> create-skweb@1.1.0 prebuild
|
|
4
|
+
> tsc --outDir dist --rootDir src
|
|
5
|
+
|
|
6
|
+
โ [1G[0K
|
|
7
|
+
> create-skweb@1.1.0 build
|
|
8
|
+
> rollup -c rollup.config.mjs
|
|
9
|
+
|
|
10
|
+
โ [1G[0K[36m
|
|
11
|
+
[1msrc/index.ts[22m โ [1mdist/index.js, dist/index.cjs[22m...[39m
|
|
12
|
+
[32mcreated [1mdist/index.js, dist/index.cjs[22m in [1m445ms[22m[39m
|
|
13
|
+
[36m
|
|
14
|
+
[1msrc/cli.ts[22m โ [1mdist/cli.js[22m...[39m
|
|
15
|
+
[1m[33m(!) Plugin replace: @rollup/plugin-replace: 'preventAssignment' currently defaults to false. It is recommended to set this option to `true`, as the next major version will default this option to `true`.[39m[22m
|
|
16
|
+
[32mcreated [1mdist/cli.js[22m in [1m281ms[22m[39m
|
|
17
|
+
โ [1G[0K
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
|
|
2
|
+
> create-skweb@1.0.0 test
|
|
3
|
+
> mocha test/**/*.mjs
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
create-skweb
|
|
8
|
+
createProject()
|
|
9
|
+
โ should create TypeScript project from template
|
|
10
|
+
โ should create MJS project from template
|
|
11
|
+
โ should create CJS project from template
|
|
12
|
+
โ should reject non-empty destination directory
|
|
13
|
+
โ should include winston in all templates
|
|
14
|
+
โ should include @dotenvx/dotenvx in all templates
|
|
15
|
+
โ should include pm2 ecosystem in all templates
|
|
16
|
+
โ should replace {{name}} placeholder in package.json
|
|
17
|
+
printBanner()
|
|
18
|
+
|
|
19
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
20
|
+
โ Create SKWeb Project โ
|
|
21
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
22
|
+
|
|
23
|
+
โ should not throw
|
|
24
|
+
printSuccess()
|
|
25
|
+
|
|
26
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
27
|
+
โ ้กน็ฎๅๅปบๆๅ๏ผ โ
|
|
28
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
29
|
+
|
|
30
|
+
้กน็ฎๅ็งฐ: my-app
|
|
31
|
+
้กน็ฎ่ทฏๅพ: /tmp/my-app
|
|
32
|
+
|
|
33
|
+
ๆฅไธๆฅๅฏไปฅๆง่ก:
|
|
34
|
+
|
|
35
|
+
cd my-app
|
|
36
|
+
|
|
37
|
+
# ๅผๅๆจกๅผ่ฟ่ก
|
|
38
|
+
npm run start:dev
|
|
39
|
+
|
|
40
|
+
# ็ไบงๆจกๅผ่ฟ่ก (้่ฆๅ
ๆๅปบ)
|
|
41
|
+
npm run build
|
|
42
|
+
npm run start
|
|
43
|
+
|
|
44
|
+
# ๆฅ็ๆฅๅฟ
|
|
45
|
+
npm run logs
|
|
46
|
+
|
|
47
|
+
# ๅๆญขๆๅก
|
|
48
|
+
npm run stop
|
|
49
|
+
|
|
50
|
+
# ้ๅฏๆๅก
|
|
51
|
+
npm run restart
|
|
52
|
+
|
|
53
|
+
้กน็ฎ็นๆง:
|
|
54
|
+
โ
TypeScript/MJS/CJS ๆฏๆ
|
|
55
|
+
โ
@dotenvx/dotenvx ็ฏๅขๅ้็ฎก็
|
|
56
|
+
โ
PM2 ่ฟ็จ็ฎก็
|
|
57
|
+
โ
SKWeb Express ้ๆ
|
|
58
|
+
โ
ESLint ไปฃ็ ๆฃๆฅ
|
|
59
|
+
โ
Mocha ๆต่ฏๆกๆถ
|
|
60
|
+
|
|
61
|
+
โ should not throw
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
10 passing (62ms)
|
|
65
|
+
|
package/CHANGELOG.md
ADDED
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import ora from 'ora';
|
|
5
|
+
import fs from 'fs-extra';
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import { fileURLToPath } from 'url';
|
|
8
|
+
import { execSync } from 'child_process';
|
|
9
|
+
|
|
10
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
async function createProject(options) {
|
|
12
|
+
const { name, description = 'A SKWeb project', template, dest } = options;
|
|
13
|
+
const templateDir = path.join(__dirname, '..', 'templates', template);
|
|
14
|
+
const targetDir = path.resolve(dest);
|
|
15
|
+
if (await fs.pathExists(targetDir)) {
|
|
16
|
+
if ((await fs.readdir(targetDir)).length > 0) {
|
|
17
|
+
throw new Error(`็ฎๆ ็ฎๅฝ ${targetDir} ไธไธบ็ฉบ`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
await fs.mkdirs(targetDir);
|
|
22
|
+
}
|
|
23
|
+
const files = await fs.readdir(templateDir, { recursive: true });
|
|
24
|
+
for (const file of files) {
|
|
25
|
+
const fileName = String(file);
|
|
26
|
+
const srcPath = path.join(templateDir, fileName);
|
|
27
|
+
const stats = await fs.stat(srcPath);
|
|
28
|
+
if (stats.isDirectory()) {
|
|
29
|
+
await fs.mkdirs(path.join(targetDir, fileName));
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
let content = await fs.readFile(srcPath, 'utf-8');
|
|
33
|
+
content = content
|
|
34
|
+
.replace(/\{\{name\}\}/g, name)
|
|
35
|
+
.replace(/\{\{description\}\}/g, description);
|
|
36
|
+
const destPath = path.join(targetDir, fileName);
|
|
37
|
+
await fs.writeFile(destPath, content);
|
|
38
|
+
}
|
|
39
|
+
await fs.mkdirs(path.join(targetDir, 'logs'));
|
|
40
|
+
}
|
|
41
|
+
async function installDependencies(dest) {
|
|
42
|
+
const targetDir = path.resolve(dest);
|
|
43
|
+
execSync('npm install', {
|
|
44
|
+
cwd: targetDir,
|
|
45
|
+
stdio: 'inherit'
|
|
46
|
+
});
|
|
47
|
+
execSync('npm install pm2 -g', {
|
|
48
|
+
cwd: targetDir,
|
|
49
|
+
stdio: 'inherit'
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async function initGit(dest) {
|
|
53
|
+
const targetDir = path.resolve(dest);
|
|
54
|
+
execSync('git init', {
|
|
55
|
+
cwd: targetDir,
|
|
56
|
+
stdio: 'inherit'
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function printBanner() {
|
|
60
|
+
console.log(`
|
|
61
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
62
|
+
โ Create SKWeb Project โ
|
|
63
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
64
|
+
`);
|
|
65
|
+
}
|
|
66
|
+
function printSuccess(name, dest) {
|
|
67
|
+
console.log(`
|
|
68
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
69
|
+
โ ้กน็ฎๅๅปบๆๅ๏ผ โ
|
|
70
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
71
|
+
|
|
72
|
+
้กน็ฎๅ็งฐ: ${name}
|
|
73
|
+
้กน็ฎ่ทฏๅพ: ${path.resolve(dest)}
|
|
74
|
+
|
|
75
|
+
ๆฅไธๆฅๅฏไปฅๆง่ก:
|
|
76
|
+
|
|
77
|
+
cd ${path.basename(path.resolve(dest))}
|
|
78
|
+
|
|
79
|
+
# ๅผๅๆจกๅผ่ฟ่ก
|
|
80
|
+
npm run start:dev
|
|
81
|
+
|
|
82
|
+
# ็ไบงๆจกๅผ่ฟ่ก (้่ฆๅ
ๆๅปบ)
|
|
83
|
+
npm run build
|
|
84
|
+
npm run start
|
|
85
|
+
|
|
86
|
+
# ๆฅ็ๆฅๅฟ
|
|
87
|
+
npm run logs
|
|
88
|
+
|
|
89
|
+
# ๅๆญขๆๅก
|
|
90
|
+
npm run stop
|
|
91
|
+
|
|
92
|
+
# ้ๅฏๆๅก
|
|
93
|
+
npm run restart
|
|
94
|
+
|
|
95
|
+
้กน็ฎ็นๆง:
|
|
96
|
+
โ
TypeScript/MJS/CJS ๆฏๆ
|
|
97
|
+
โ
@dotenvx/dotenvx ็ฏๅขๅ้็ฎก็
|
|
98
|
+
โ
PM2 ่ฟ็จ็ฎก็
|
|
99
|
+
โ
SKWeb Express ้ๆ
|
|
100
|
+
โ
ESLint ไปฃ็ ๆฃๆฅ
|
|
101
|
+
โ
Mocha ๆต่ฏๆกๆถ
|
|
102
|
+
`);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
async function main() {
|
|
106
|
+
const program = new Command();
|
|
107
|
+
program
|
|
108
|
+
.name('create-skweb')
|
|
109
|
+
.description('Create a new SKWeb project with TypeScript, CJS, or MJS support')
|
|
110
|
+
.argument('[name]', 'Project name')
|
|
111
|
+
.option('--template <type>', 'Template type: ts, mjs, cjs', 'ts')
|
|
112
|
+
.option('--dest <path>', 'Destination directory', '.')
|
|
113
|
+
.option('--skip-install', 'Skip dependency installation')
|
|
114
|
+
.option('--skip-git', 'Skip git initialization')
|
|
115
|
+
.action(async (name, options) => {
|
|
116
|
+
printBanner();
|
|
117
|
+
if (!name) {
|
|
118
|
+
const answers = await inquirer.prompt([
|
|
119
|
+
{
|
|
120
|
+
type: 'input',
|
|
121
|
+
name: 'name',
|
|
122
|
+
message: 'Enter project name:',
|
|
123
|
+
default: 'my-skweb-app',
|
|
124
|
+
validate: (input) => {
|
|
125
|
+
if (!input || input.trim() === '') {
|
|
126
|
+
return 'Please enter a project name';
|
|
127
|
+
}
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'list',
|
|
133
|
+
name: 'template',
|
|
134
|
+
message: 'Select project template:',
|
|
135
|
+
choices: [
|
|
136
|
+
{ name: 'TypeScript', value: 'ts' },
|
|
137
|
+
{ name: 'ES Modules (MJS)', value: 'mjs' },
|
|
138
|
+
{ name: 'CommonJS (CJS)', value: 'cjs' }
|
|
139
|
+
],
|
|
140
|
+
default: 'ts'
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'input',
|
|
144
|
+
name: 'dest',
|
|
145
|
+
message: 'Enter destination directory:',
|
|
146
|
+
default: '.'
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
type: 'confirm',
|
|
150
|
+
name: 'install',
|
|
151
|
+
message: 'Install dependencies?',
|
|
152
|
+
default: true
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
type: 'confirm',
|
|
156
|
+
name: 'git',
|
|
157
|
+
message: 'Initialize git repository?',
|
|
158
|
+
default: true
|
|
159
|
+
}
|
|
160
|
+
]);
|
|
161
|
+
name = answers.name;
|
|
162
|
+
options.template = answers.template;
|
|
163
|
+
options.dest = answers.dest;
|
|
164
|
+
options.skipInstall = !answers.install;
|
|
165
|
+
options.skipGit = !answers.git;
|
|
166
|
+
}
|
|
167
|
+
const spinner = ora('Creating project...').start();
|
|
168
|
+
try {
|
|
169
|
+
await createProject({
|
|
170
|
+
name,
|
|
171
|
+
template: options.template,
|
|
172
|
+
dest: options.dest
|
|
173
|
+
});
|
|
174
|
+
spinner.succeed('Project files created');
|
|
175
|
+
if (!options.skipInstall) {
|
|
176
|
+
spinner.text = 'Installing dependencies...';
|
|
177
|
+
spinner.start();
|
|
178
|
+
await installDependencies(options.dest);
|
|
179
|
+
spinner.succeed('Dependencies installed');
|
|
180
|
+
}
|
|
181
|
+
if (!options.skipGit) {
|
|
182
|
+
spinner.text = 'Initializing git repository...';
|
|
183
|
+
spinner.start();
|
|
184
|
+
await initGit(options.dest);
|
|
185
|
+
spinner.succeed('Git repository initialized');
|
|
186
|
+
}
|
|
187
|
+
spinner.stop();
|
|
188
|
+
printSuccess(name, options.dest);
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
spinner.fail('Failed to create project');
|
|
192
|
+
console.error(error);
|
|
193
|
+
process.exit(1);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
await program.parseAsync();
|
|
197
|
+
}
|
|
198
|
+
main().catch(console.error);
|
|
199
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sources":["../src/index.ts","../src/cli.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var fs = require('fs-extra');
|
|
6
|
+
var path = require('path');
|
|
7
|
+
var url = require('url');
|
|
8
|
+
var child_process = require('child_process');
|
|
9
|
+
|
|
10
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
|
+
|
|
12
|
+
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
13
|
+
var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
|
|
14
|
+
|
|
15
|
+
const __dirname$1 = path__default["default"].dirname(url.fileURLToPath((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT' && document.currentScript.src || new URL('index.cjs', document.baseURI).href))));
|
|
16
|
+
async function createProject(options) {
|
|
17
|
+
const { name, description = 'A SKWeb project', template, dest } = options;
|
|
18
|
+
const templateDir = path__default["default"].join(__dirname$1, '..', 'templates', template);
|
|
19
|
+
const targetDir = path__default["default"].resolve(dest);
|
|
20
|
+
if (await fs__default["default"].pathExists(targetDir)) {
|
|
21
|
+
if ((await fs__default["default"].readdir(targetDir)).length > 0) {
|
|
22
|
+
throw new Error(`็ฎๆ ็ฎๅฝ ${targetDir} ไธไธบ็ฉบ`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
await fs__default["default"].mkdirs(targetDir);
|
|
27
|
+
}
|
|
28
|
+
const files = await fs__default["default"].readdir(templateDir, { recursive: true });
|
|
29
|
+
for (const file of files) {
|
|
30
|
+
const fileName = String(file);
|
|
31
|
+
const srcPath = path__default["default"].join(templateDir, fileName);
|
|
32
|
+
const stats = await fs__default["default"].stat(srcPath);
|
|
33
|
+
if (stats.isDirectory()) {
|
|
34
|
+
await fs__default["default"].mkdirs(path__default["default"].join(targetDir, fileName));
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
let content = await fs__default["default"].readFile(srcPath, 'utf-8');
|
|
38
|
+
content = content
|
|
39
|
+
.replace(/\{\{name\}\}/g, name)
|
|
40
|
+
.replace(/\{\{description\}\}/g, description);
|
|
41
|
+
const destPath = path__default["default"].join(targetDir, fileName);
|
|
42
|
+
await fs__default["default"].writeFile(destPath, content);
|
|
43
|
+
}
|
|
44
|
+
await fs__default["default"].mkdirs(path__default["default"].join(targetDir, 'logs'));
|
|
45
|
+
}
|
|
46
|
+
async function installDependencies(dest) {
|
|
47
|
+
const targetDir = path__default["default"].resolve(dest);
|
|
48
|
+
child_process.execSync('npm install', {
|
|
49
|
+
cwd: targetDir,
|
|
50
|
+
stdio: 'inherit'
|
|
51
|
+
});
|
|
52
|
+
child_process.execSync('npm install pm2 -g', {
|
|
53
|
+
cwd: targetDir,
|
|
54
|
+
stdio: 'inherit'
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
async function initGit(dest) {
|
|
58
|
+
const targetDir = path__default["default"].resolve(dest);
|
|
59
|
+
child_process.execSync('git init', {
|
|
60
|
+
cwd: targetDir,
|
|
61
|
+
stdio: 'inherit'
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function printBanner() {
|
|
65
|
+
console.log(`
|
|
66
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
67
|
+
โ Create SKWeb Project โ
|
|
68
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
69
|
+
`);
|
|
70
|
+
}
|
|
71
|
+
function printSuccess(name, dest) {
|
|
72
|
+
console.log(`
|
|
73
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
74
|
+
โ ้กน็ฎๅๅปบๆๅ๏ผ โ
|
|
75
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
76
|
+
|
|
77
|
+
้กน็ฎๅ็งฐ: ${name}
|
|
78
|
+
้กน็ฎ่ทฏๅพ: ${path__default["default"].resolve(dest)}
|
|
79
|
+
|
|
80
|
+
ๆฅไธๆฅๅฏไปฅๆง่ก:
|
|
81
|
+
|
|
82
|
+
cd ${path__default["default"].basename(path__default["default"].resolve(dest))}
|
|
83
|
+
|
|
84
|
+
# ๅผๅๆจกๅผ่ฟ่ก
|
|
85
|
+
npm run start:dev
|
|
86
|
+
|
|
87
|
+
# ็ไบงๆจกๅผ่ฟ่ก (้่ฆๅ
ๆๅปบ)
|
|
88
|
+
npm run build
|
|
89
|
+
npm run start
|
|
90
|
+
|
|
91
|
+
# ๆฅ็ๆฅๅฟ
|
|
92
|
+
npm run logs
|
|
93
|
+
|
|
94
|
+
# ๅๆญขๆๅก
|
|
95
|
+
npm run stop
|
|
96
|
+
|
|
97
|
+
# ้ๅฏๆๅก
|
|
98
|
+
npm run restart
|
|
99
|
+
|
|
100
|
+
้กน็ฎ็นๆง:
|
|
101
|
+
โ
TypeScript/MJS/CJS ๆฏๆ
|
|
102
|
+
โ
@dotenvx/dotenvx ็ฏๅขๅ้็ฎก็
|
|
103
|
+
โ
PM2 ่ฟ็จ็ฎก็
|
|
104
|
+
โ
SKWeb Express ้ๆ
|
|
105
|
+
โ
ESLint ไปฃ็ ๆฃๆฅ
|
|
106
|
+
โ
Mocha ๆต่ฏๆกๆถ
|
|
107
|
+
`);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
exports.createProject = createProject;
|
|
111
|
+
exports.initGit = initGit;
|
|
112
|
+
exports.installDependencies = installDependencies;
|
|
113
|
+
exports.printBanner = printBanner;
|
|
114
|
+
exports.printSuccess = printSuccess;
|
|
115
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":[null],"names":["__dirname","path","fileURLToPath","fs","execSync"],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface CreateOptions {
|
|
2
|
+
name: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
template: 'ts' | 'mjs' | 'cjs';
|
|
5
|
+
dest: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function createProject(options: CreateOptions): Promise<void>;
|
|
8
|
+
export declare function installDependencies(dest: string): Promise<void>;
|
|
9
|
+
export declare function initGit(dest: string): Promise<void>;
|
|
10
|
+
export declare function printBanner(): void;
|
|
11
|
+
export declare function printSuccess(name: string, dest: string): void;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCzE;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYrE;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOzD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAMlC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAqC7D"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import { execSync } from 'child_process';
|
|
5
|
+
|
|
6
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
async function createProject(options) {
|
|
8
|
+
const { name, description = 'A SKWeb project', template, dest } = options;
|
|
9
|
+
const templateDir = path.join(__dirname, '..', 'templates', template);
|
|
10
|
+
const targetDir = path.resolve(dest);
|
|
11
|
+
if (await fs.pathExists(targetDir)) {
|
|
12
|
+
if ((await fs.readdir(targetDir)).length > 0) {
|
|
13
|
+
throw new Error(`็ฎๆ ็ฎๅฝ ${targetDir} ไธไธบ็ฉบ`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
await fs.mkdirs(targetDir);
|
|
18
|
+
}
|
|
19
|
+
const files = await fs.readdir(templateDir, { recursive: true });
|
|
20
|
+
for (const file of files) {
|
|
21
|
+
const fileName = String(file);
|
|
22
|
+
const srcPath = path.join(templateDir, fileName);
|
|
23
|
+
const stats = await fs.stat(srcPath);
|
|
24
|
+
if (stats.isDirectory()) {
|
|
25
|
+
await fs.mkdirs(path.join(targetDir, fileName));
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
let content = await fs.readFile(srcPath, 'utf-8');
|
|
29
|
+
content = content
|
|
30
|
+
.replace(/\{\{name\}\}/g, name)
|
|
31
|
+
.replace(/\{\{description\}\}/g, description);
|
|
32
|
+
const destPath = path.join(targetDir, fileName);
|
|
33
|
+
await fs.writeFile(destPath, content);
|
|
34
|
+
}
|
|
35
|
+
await fs.mkdirs(path.join(targetDir, 'logs'));
|
|
36
|
+
}
|
|
37
|
+
async function installDependencies(dest) {
|
|
38
|
+
const targetDir = path.resolve(dest);
|
|
39
|
+
execSync('npm install', {
|
|
40
|
+
cwd: targetDir,
|
|
41
|
+
stdio: 'inherit'
|
|
42
|
+
});
|
|
43
|
+
execSync('npm install pm2 -g', {
|
|
44
|
+
cwd: targetDir,
|
|
45
|
+
stdio: 'inherit'
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
async function initGit(dest) {
|
|
49
|
+
const targetDir = path.resolve(dest);
|
|
50
|
+
execSync('git init', {
|
|
51
|
+
cwd: targetDir,
|
|
52
|
+
stdio: 'inherit'
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function printBanner() {
|
|
56
|
+
console.log(`
|
|
57
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
58
|
+
โ Create SKWeb Project โ
|
|
59
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
60
|
+
`);
|
|
61
|
+
}
|
|
62
|
+
function printSuccess(name, dest) {
|
|
63
|
+
console.log(`
|
|
64
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
65
|
+
โ ้กน็ฎๅๅปบๆๅ๏ผ โ
|
|
66
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
67
|
+
|
|
68
|
+
้กน็ฎๅ็งฐ: ${name}
|
|
69
|
+
้กน็ฎ่ทฏๅพ: ${path.resolve(dest)}
|
|
70
|
+
|
|
71
|
+
ๆฅไธๆฅๅฏไปฅๆง่ก:
|
|
72
|
+
|
|
73
|
+
cd ${path.basename(path.resolve(dest))}
|
|
74
|
+
|
|
75
|
+
# ๅผๅๆจกๅผ่ฟ่ก
|
|
76
|
+
npm run start:dev
|
|
77
|
+
|
|
78
|
+
# ็ไบงๆจกๅผ่ฟ่ก (้่ฆๅ
ๆๅปบ)
|
|
79
|
+
npm run build
|
|
80
|
+
npm run start
|
|
81
|
+
|
|
82
|
+
# ๆฅ็ๆฅๅฟ
|
|
83
|
+
npm run logs
|
|
84
|
+
|
|
85
|
+
# ๅๆญขๆๅก
|
|
86
|
+
npm run stop
|
|
87
|
+
|
|
88
|
+
# ้ๅฏๆๅก
|
|
89
|
+
npm run restart
|
|
90
|
+
|
|
91
|
+
้กน็ฎ็นๆง:
|
|
92
|
+
โ
TypeScript/MJS/CJS ๆฏๆ
|
|
93
|
+
โ
@dotenvx/dotenvx ็ฏๅขๅ้็ฎก็
|
|
94
|
+
โ
PM2 ่ฟ็จ็ฎก็
|
|
95
|
+
โ
SKWeb Express ้ๆ
|
|
96
|
+
โ
ESLint ไปฃ็ ๆฃๆฅ
|
|
97
|
+
โ
Mocha ๆต่ฏๆกๆถ
|
|
98
|
+
`);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export { createProject, initGit, installDependencies, printBanner, printSuccess };
|
|
102
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "create-skweb",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Create a new SKWeb project with TypeScript, CJS, or MJS support",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.cjs",
|
|
7
|
+
"module": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"bin": {
|
|
10
|
+
"create-skweb": "./dist/cli.js"
|
|
11
|
+
},
|
|
12
|
+
"scripts": {
|
|
13
|
+
"clean": "rm -rf dist",
|
|
14
|
+
"clean:temp": "rm -rf .rollup.cache",
|
|
15
|
+
"prebuild": "tsc --outDir dist --rootDir src",
|
|
16
|
+
"build": "rollup -c rollup.config.mjs",
|
|
17
|
+
"build:dev": "rollup -c rollup.config.mjs --environment NODE_ENV:development",
|
|
18
|
+
"lint": "eslint --fix --ext .ts src",
|
|
19
|
+
"check": "tsc --noEmit",
|
|
20
|
+
"test": "mocha test/**/*.mjs"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"commander": "^12.1.0",
|
|
24
|
+
"inquirer": "^12.0.0",
|
|
25
|
+
"ora": "^8.0.1",
|
|
26
|
+
"fs-extra": "^11.2.0"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/node": "^25.0.1",
|
|
30
|
+
"@types/fs-extra": "^11.0.4",
|
|
31
|
+
"@types/inquirer": "^9.0.7",
|
|
32
|
+
"chai": "^6.2.1",
|
|
33
|
+
"mocha": "^11.7.5",
|
|
34
|
+
"rollup": "^2.79.2",
|
|
35
|
+
"@rollup/plugin-typescript": "^12.3.0",
|
|
36
|
+
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
37
|
+
"@rollup/plugin-commonjs": "^29.0.0",
|
|
38
|
+
"@rollup/plugin-replace": "^6.0.3",
|
|
39
|
+
"eslint": "^9.39.1",
|
|
40
|
+
"typescript": "^5.9.3"
|
|
41
|
+
},
|
|
42
|
+
"engines": {
|
|
43
|
+
"node": ">=20.18.1"
|
|
44
|
+
},
|
|
45
|
+
"keywords": [
|
|
46
|
+
"skweb",
|
|
47
|
+
"cli",
|
|
48
|
+
"create",
|
|
49
|
+
"boilerplate",
|
|
50
|
+
"generator"
|
|
51
|
+
],
|
|
52
|
+
"author": "stayknight",
|
|
53
|
+
"license": "MIT"
|
|
54
|
+
}
|