create-skweb 3.1.1 → 3.3.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.
Files changed (50) hide show
  1. package/.rollup.cache/Users/stayknight/projects/skweb-mono/tools/create-skweb/dist/index.js +14 -1
  2. package/.rollup.cache/Users/stayknight/projects/skweb-mono/tools/create-skweb/tsconfig.tsbuildinfo +1 -1
  3. package/.turbo/turbo-build.log +16 -17
  4. package/.turbo/turbo-lint.log +11 -12
  5. package/.turbo/turbo-test.log +66 -1
  6. package/CHANGELOG.md +49 -0
  7. package/dist/cli.js +14 -1
  8. package/dist/index.js +14 -1
  9. package/package.json +1 -1
  10. package/src/index.ts +21 -1
  11. package/templates/cjs/.env.example +5 -9
  12. package/templates/cjs/ecosystem.config.js +2 -2
  13. package/templates/cjs/package.json +5 -5
  14. package/templates/cjs/src/controllers/user.js +2 -2
  15. package/templates/cjs/src/cron-app.js +40 -0
  16. package/templates/cjs/src/cron-framework.js +44 -0
  17. package/templates/cjs/src/swagger.js +13 -18
  18. package/templates/cjs/src/utils/config.js +33 -13
  19. package/templates/cjs/src/{app.js → web-app.js} +41 -53
  20. package/templates/cjs/src/web-framework.js +23 -0
  21. package/templates/mjs/.env.example +5 -9
  22. package/templates/mjs/ecosystem.config.js +2 -2
  23. package/templates/mjs/package.json +5 -5
  24. package/templates/mjs/src/controllers/user.js +2 -2
  25. package/templates/mjs/src/cron-app.js +45 -0
  26. package/templates/mjs/src/cron-framework.js +44 -0
  27. package/templates/mjs/src/swagger.js +13 -18
  28. package/templates/mjs/src/utils/config.js +29 -13
  29. package/templates/mjs/src/{app.js → web-app.js} +40 -56
  30. package/templates/mjs/src/web-framework.js +23 -0
  31. package/templates/ts/.env.example +5 -9
  32. package/templates/ts/ecosystem.config.js +2 -2
  33. package/templates/ts/package.json +5 -5
  34. package/templates/ts/src/controllers/user.ts +2 -2
  35. package/templates/ts/src/cron-app.ts +45 -0
  36. package/templates/ts/src/cron-framework.ts +44 -0
  37. package/templates/ts/src/swagger.ts +13 -19
  38. package/templates/ts/src/utils/config.ts +29 -13
  39. package/templates/ts/src/{app.ts → web-app.ts} +40 -63
  40. package/templates/ts/src/web-framework.ts +23 -0
  41. package/tsconfig.tsbuildinfo +1 -1
  42. package/templates/cjs/src/cronWorker.js +0 -80
  43. package/templates/cjs/src/index.js +0 -7
  44. package/templates/cjs/src/services/database.js +0 -15
  45. package/templates/mjs/src/cronWorker.js +0 -86
  46. package/templates/mjs/src/index.js +0 -8
  47. package/templates/mjs/src/services/database.js +0 -16
  48. package/templates/ts/src/cronWorker.ts +0 -85
  49. package/templates/ts/src/index.ts +0 -8
  50. package/templates/ts/src/services/database.ts +0 -16
@@ -1,86 +0,0 @@
1
- import 'dotenv/config'
2
-
3
- import path from 'path'
4
- import { fileURLToPath } from 'url'
5
- import logger from './utils/logger.js'
6
- import { checkRequiredEnv } from './utils/config.js'
7
-
8
- const __filename = fileURLToPath(import.meta.url)
9
- const __dirname = path.dirname(__filename)
10
-
11
- async function startCronWorker() {
12
- logger.info('[cron-worker] Starting cron worker process...')
13
-
14
- if (!checkRequiredEnv()) {
15
- logger.error('[cron-worker] Configuration validation failed, exiting...')
16
- process.exit(1)
17
- }
18
-
19
- const { CronFramework } = await import('skweb-framework')
20
-
21
- const framework = new CronFramework({
22
- db: {
23
- host: process.env.DB_HOST || '127.0.0.1',
24
- port: Number(process.env.DB_PORT) || 3306,
25
- username: process.env.DB_USER || 'root',
26
- password: process.env.DB_PASS || '',
27
- database: process.env.DB_NAME || 'test-project',
28
- dialect: process.env.DB_DIALECT || 'mysql',
29
- charset: process.env.DB_CHARSET || 'utf8mb4',
30
- underscored: true,
31
- logging: process.env.DEBUG_DB === 'true' ? (msg) => logger.debug(msg) : false
32
- },
33
- redis: {
34
- host: process.env.REDIS_HOST || '127.0.0.1',
35
- port: Number(process.env.REDIS_PORT) || 6379,
36
- password: process.env.REDIS_PASSWORD || undefined
37
- },
38
- channel: 'cron:task:cmd',
39
- logger,
40
- onSaveTask: async (taskData) => {
41
- const SysCronTask = framework.db?.sequelize?.models.SysCronTask
42
- if (SysCronTask) {
43
- await SysCronTask.update(
44
- { cache: taskData.cache, data: taskData.data },
45
- { where: { id: taskData.taskId } }
46
- )
47
- }
48
- },
49
- loadTasks: async () => {
50
- const SysCronTask = framework.db?.sequelize?.models.SysCronTask
51
- if (!SysCronTask) return []
52
- return (await SysCronTask.findAll()).map((t) => ({
53
- id: String(t.id),
54
- cronTime: t.cronTime,
55
- method: t.method
56
- }))
57
- }
58
- })
59
-
60
- await framework.setup({
61
- modelsDir: path.join(__dirname, './models'),
62
- cronActionsDir: path.join(__dirname, './cronActions')
63
- })
64
- await framework.start()
65
- logger.info('[cron-worker] Cron worker started')
66
-
67
- // 未捕获异常:打印堆栈后直接退出。OS / 进程管理器负责回收资源。
68
- process.on('uncaughtException', (err) => {
69
- logger.error(`[cron-worker] uncaughtException: ${err.stack || err.message}`)
70
- process.exit(1)
71
- })
72
- process.on('unhandledRejection', (reason) => {
73
- logger.error(`[cron-worker] unhandledRejection: ${reason instanceof Error ? reason.stack : String(reason)}`)
74
- process.exit(1)
75
- })
76
- }
77
-
78
- const isMainModule = import.meta.url === `file://${process.argv[1]}`
79
- if (isMainModule) {
80
- startCronWorker().catch((err) => {
81
- logger.error('[cron-worker] Fatal error:', err)
82
- process.exit(1)
83
- })
84
- }
85
-
86
- export { startCronWorker }
@@ -1,8 +0,0 @@
1
- import 'dotenv/config'
2
-
3
- import { bootstrap } from './app.js'
4
-
5
- const isMainModule = import.meta.url === `file://${process.argv[1]}`
6
- if (isMainModule) {
7
- bootstrap()
8
- }
@@ -1,16 +0,0 @@
1
- import { Database } from 'skweb-sequelize'
2
-
3
- const db = new Database({
4
- host: process.env.DB_HOST || '127.0.0.1',
5
- port: Number(process.env.DB_PORT) || 3306,
6
- username: process.env.DB_USER || 'root',
7
- password: process.env.DB_PASS || '',
8
- database: process.env.DB_NAME || '{{name}}',
9
- dialect: process.env.DB_DIALECT || 'mysql',
10
- charset: process.env.DB_CHARSET || 'utf8mb4',
11
- underscored: true,
12
- logging: process.env.DEBUG_DB === 'true'
13
- })
14
-
15
- export { db }
16
- export default db
@@ -1,85 +0,0 @@
1
- import 'dotenv/config'
2
-
3
- import path from 'path'
4
- import { fileURLToPath } from 'url'
5
- import { CronFramework } from 'skweb-framework'
6
- import logger from './utils/logger.js'
7
- import { checkRequiredEnv } from './utils/config.js'
8
-
9
- const __filename = fileURLToPath(import.meta.url)
10
- const __dirname = path.dirname(__filename)
11
-
12
- async function startCronWorker(): Promise<void> {
13
- logger.info('[cron-worker] Starting cron worker process...')
14
-
15
- if (!checkRequiredEnv()) {
16
- logger.error('[cron-worker] Configuration validation failed, exiting...')
17
- process.exit(1)
18
- }
19
-
20
- const framework = new CronFramework({
21
- db: {
22
- host: process.env.DB_HOST || '127.0.0.1',
23
- port: Number(process.env.DB_PORT) || 3306,
24
- username: process.env.DB_USER || 'root',
25
- password: process.env.DB_PASS || '',
26
- database: process.env.DB_NAME || 'test-project',
27
- dialect: (process.env.DB_DIALECT as 'mysql' | 'postgres' | 'sqlite' | 'mariadb') || 'mysql',
28
- charset: process.env.DB_CHARSET || 'utf8mb4',
29
- underscored: true,
30
- logging: process.env.DEBUG_DB === 'true' ? (msg: string) => logger.debug(msg) : false
31
- },
32
- redis: {
33
- host: process.env.REDIS_HOST || '127.0.0.1',
34
- port: Number(process.env.REDIS_PORT) || 6379,
35
- password: process.env.REDIS_PASSWORD || undefined
36
- },
37
- channel: 'cron:task:cmd',
38
- logger,
39
- onSaveTask: async (taskData: { taskId: string; cache: unknown; data: unknown }) => {
40
- const SysCronTask = framework.dbInstance?.sequelize?.models.SysCronTask as any
41
- if (SysCronTask) {
42
- await SysCronTask.update(
43
- { cache: taskData.cache, data: taskData.data },
44
- { where: { id: taskData.taskId } }
45
- )
46
- }
47
- },
48
- loadTasks: async () => {
49
- const SysCronTask = framework.dbInstance?.sequelize?.models.SysCronTask as any
50
- if (!SysCronTask) return []
51
- return (await SysCronTask.findAll()).map((t: any) => ({
52
- id: String(t.id),
53
- cronTime: t.cronTime,
54
- method: t.method
55
- }))
56
- }
57
- })
58
-
59
- await framework.setup({
60
- modelsDir: path.join(__dirname, './models'),
61
- cronActionsDir: path.join(__dirname, './cronActions')
62
- })
63
- await framework.start()
64
- logger.info('[cron-worker] Cron worker started')
65
-
66
- // 未捕获异常:打印堆栈后直接退出。OS / 进程管理器负责回收资源。
67
- process.on('uncaughtException', (err) => {
68
- logger.error(`[cron-worker] uncaughtException: ${err.stack || err.message}`)
69
- process.exit(1)
70
- })
71
- process.on('unhandledRejection', (reason) => {
72
- logger.error(`[cron-worker] unhandledRejection: ${reason instanceof Error ? reason.stack : String(reason)}`)
73
- process.exit(1)
74
- })
75
- }
76
-
77
- const isMainModule = import.meta.url === `file://${process.argv[1]}`
78
- if (isMainModule) {
79
- startCronWorker().catch((err) => {
80
- logger.error('[cron-worker] Fatal error:', err)
81
- process.exit(1)
82
- })
83
- }
84
-
85
- export { startCronWorker }
@@ -1,8 +0,0 @@
1
- import 'dotenv/config'
2
-
3
- import { bootstrap } from './app.js'
4
-
5
- const isMainModule = import.meta.url === `file://${process.argv[1]}`
6
- if (isMainModule) {
7
- bootstrap()
8
- }
@@ -1,16 +0,0 @@
1
- import { Database } from 'skweb-sequelize'
2
-
3
- const db = new Database({
4
- host: process.env.DB_HOST || '127.0.0.1',
5
- port: Number(process.env.DB_PORT) || 3306,
6
- username: process.env.DB_USER || 'root',
7
- password: process.env.DB_PASS || '',
8
- database: process.env.DB_NAME || '{{name}}',
9
- dialect: (process.env.DB_DIALECT as any) || 'mysql',
10
- charset: process.env.DB_CHARSET || 'utf8mb4',
11
- underscored: true,
12
- logging: process.env.DEBUG_DB === 'true'
13
- })
14
-
15
- export { db }
16
- export default db