Browse Source

feat: 删除不再使用的 bunfig.toml 文件,更新相关依赖和配置

mono
dash 2 months ago
parent
commit
e8d7866b8b
  1. 26
      .env.example
  2. BIN
      bun.lockb
  3. 16
      bunfig.toml
  4. 9
      internal/x/components/ClientOnly.vue
  5. 10
      package.json
  6. 23
      packages/client/package.json
  7. 9
      packages/core/package.json
  8. 10
      packages/server/drizzle.config.ts
  9. 8
      packages/server/drizzle/0000_thick_may_parker.sql
  10. 70
      packages/server/drizzle/meta/0000_snapshot.json
  11. 13
      packages/server/drizzle/meta/_journal.json
  12. 16
      packages/server/package.json
  13. 4
      packages/server/src/db/index.ts
  14. 8
      packages/server/src/db/schema.ts
  15. 2
      packages/server/src/middleware/install.ts
  16. 2
      packages/server/src/ssr/index.ts
  17. 4
      scripts/build.js
  18. 16
      scripts/fix-type-router.js
  19. 3
      tsup.config.ts
  20. 18
      tsup.jobs.config.ts
  21. 18
      tsup.modules.config.ts

26
.env.example

@ -0,0 +1,26 @@
# 环境变量配置文件
# 服务器配置
NODE_ENV=development
PORT=3000
HOST=localhost
# 安全配置
AI_APIKEY=ai-apikey
SESSION_SECRET=your-session-secret-key-here,another-secret-key
JWT_SECRET=your-jwt-secret-key-must-be-at-least-32-characters-long
# 数据库配置
DB_PATH=./data/database.db
# 日志配置
LOG_LEVEL=info
LOG_FILE=./logs/app.log
# 缓存配置
REDIS_HOST=localhost
REDIS_PORT=6379
# 任务调度配置
JOBS_ENABLED=true
TZ=Asia/Shanghai

BIN
bun.lockb

Binary file not shown.

16
bunfig.toml

@ -1,16 +0,0 @@
# bun 编译配置:将 dist 下的所有资源一并内嵌到可执行文件中
# 注意:命令行中的 --compile/--outfile 参数依然可以覆盖这里的设置
[compile]
# 入口文件(与 package.json 的 bundle:exe 一致)
entrypoint = "dist/booststap.js"
# 需要内嵌到可执行文件中的静态资源(包含服务端/客户端产物)
assets = [
"dist/**"
]
# 输出可执行文件路径
outfile = "dist/koa-ssr.exe"

9
internal/x/components/ClientOnly.vue

@ -36,10 +36,11 @@ export default defineComponent({
onMounted(() => {
mounted.value = true;
});
const vm = getCurrentInstance();
if (vm) {
vm._nuxtClientOnly = true;
}
//
// const vm = getCurrentInstance();
// if (vm) {
// vm._nuxtClientOnly = true;
// }
provide(clientOnlySymbol, true);
return () => {
if (mounted.value) {

10
package.json

@ -8,20 +8,17 @@
"scripts": {
"postinstall": "node scripts/fix-type-router.js",
"dev": "bun run --hot packages/server/src/booststap.ts",
"db": "bun run --env-file=.env --filter server db ",
"build:client": "bun run --filter client build",
"start": "cd dist && cross-env NODE_ENV=production bun run booststap.js",
"build:all": "cross-env NODE_ENV=production tsup --config tsup.config.ts",
"build": "rimraf dist && bun run build:client && bun run build:all && node scripts/build.js",
"bundle:exe": "bun build --compile ./dist/booststap.js ./dist/**/* --minify --outfile ./dist/koa-ssr.exe",
"build:exe": "bun run build && bun run bundle:exe",
"tsc:booststap": "tsc packages/booststap/src/server.ts --outDir dist --module es2022 --target es2022 --lib es2022,dom --moduleResolution bundler --esModuleInterop --skipLibCheck --forceConsistentCasingInFileNames --noEmit false --incremental false",
"tsc:server": "tsc packages/server/src/**/*.ts --outDir dist/server --module es2022 --target es2022 --lib es2022,dom --moduleResolution bundler --esModuleInterop --skipLibCheck --forceConsistentCasingInFileNames --noEmit false --incremental false"
},
"devDependencies": {
"@types/bun": "latest",
"@types/koa-compose": "^3.2.8",
"client": "workspace:*",
"core": "workspace:*",
"cross-env": "^10.1.0",
"fast-glob": "^3.3.3",
"helper": "workspace:*",
@ -29,6 +26,7 @@
"server": "workspace:*",
"tsup": "^8.5.0",
"unplugin-vue-components": "^29.1.0",
"vite": "^7.1.7",
"vite-plugin-devtools-json": "^1.0.0",
"x": "workspace:*"
},
@ -36,8 +34,6 @@
"typescript": "^5.9.3"
},
"dependencies": {
"koa-compose": "^4.1.0",
"pinia": "^3.0.3",
"vite": "^7.1.7"
"vue": "^3.5.22"
}
}

23
packages/client/package.json

@ -11,13 +11,18 @@
"@types/jsdom": "^27.0.0",
"sass-embedded": "^1.93.2",
"unplugin-vue-components": "^29.1.0",
"vue-tsc": "^3.1.0"
"vue-tsc": "^3.1.0",
"@vitejs/plugin-vue": "^6.0.1",
"unplugin-auto-import": "^20.2.0",
"vite-plugin-vue-layouts": "^0.11.0"
},
"dependencies": {
"@maz-ui/icons": "^4.1.3",
"@maz-ui/themes": "^4.1.5",
"@unhead/vue": "^2.0.17",
"@vitejs/plugin-vue": "^6.0.1",
"ofetch": "^1.4.1",
"pinia": "^3.0.3",
"unplugin-vue-router": "^0.15.0",
"vue-final-modal": "^4.5.5",
"vue-router": "^4.5.1",
"ant-design-x-vue": "^1.3.2",
"dompurify": "^3.2.7",
"eventsource-parser": "^3.0.6",
@ -25,13 +30,9 @@
"jsdom": "^27.0.0",
"marked": "^16.3.0",
"maz-ui": "^4.1.6",
"ofetch": "^1.4.1",
"quill": "^2.0.3",
"unplugin-auto-import": "^20.2.0",
"unplugin-vue-router": "^0.15.0",
"vite-plugin-vue-layouts": "^0.11.0",
"vue": "^3.5.22",
"vue-final-modal": "^4.5.5",
"vue-router": "^4.5.1"
"@maz-ui/icons": "^4.1.3",
"@maz-ui/themes": "^4.1.5",
"@maz-ui/translations": "^4.1.7"
}
}

9
packages/core/package.json

@ -1,9 +0,0 @@
{
"name": "core",
"exports": {
"./*": {
"import": "./src/*.ts",
"require": "./src/*.ts"
}
}
}

10
packages/server/drizzle.config.ts

@ -0,0 +1,10 @@
import { defineConfig } from 'drizzle-kit';
export default defineConfig({
out: './drizzle',
schema: './src/db/schema.ts',
dialect: 'mysql',
dbCredentials: {
url: process.env.DATABASE_URL!,
},
});

8
packages/server/drizzle/0000_thick_may_parker.sql

@ -0,0 +1,8 @@
CREATE TABLE `users_table` (
`id` serial AUTO_INCREMENT NOT NULL,
`name` varchar(255) NOT NULL,
`age` int NOT NULL,
`email` varchar(255) NOT NULL,
CONSTRAINT `users_table_id` PRIMARY KEY(`id`),
CONSTRAINT `users_table_email_unique` UNIQUE(`email`)
);

70
packages/server/drizzle/meta/0000_snapshot.json

@ -0,0 +1,70 @@
{
"version": "5",
"dialect": "mysql",
"id": "3770df0e-b3f2-4223-8e66-2880f634d8b0",
"prevId": "00000000-0000-0000-0000-000000000000",
"tables": {
"users_table": {
"name": "users_table",
"columns": {
"id": {
"name": "id",
"type": "serial",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"age": {
"name": "age",
"type": "int",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_table_id": {
"name": "users_table_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_table_email_unique": {
"name": "users_table_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}

13
packages/server/drizzle/meta/_journal.json

@ -0,0 +1,13 @@
{
"version": "7",
"dialect": "mysql",
"entries": [
{
"idx": 0,
"version": "5",
"when": 1760625865036,
"tag": "0000_thick_may_parker",
"breakpoints": true
}
]
}

16
packages/server/package.json

@ -7,27 +7,37 @@
"types": "./src/*.d.ts"
}
},
"scripts": {},
"scripts": {
"db": "bunx --bun drizzle-kit "
},
"devDependencies": {
"@types/formidable": "^3.4.5",
"@types/koa": "^3.0.0",
"@types/koa-bodyparser": "^4.3.12",
"@types/koa-compose": "^3.2.8",
"@types/koa-send": "^4.1.6",
"@types/path-is-absolute": "^1.0.2"
"@types/path-is-absolute": "^1.0.2",
"drizzle-kit": "^0.31.5"
},
"dependencies": {
"@types/jsonwebtoken": "^9.0.10",
"assert": "^2.1.0",
"drizzle-orm": "^0.44.6",
"formidable": "^3.5.4",
"http-errors": "^2.0.0",
"jsonwebtoken": "^9.0.2",
"koa": "^3.0.1",
"koa-bodyparser": "^4.4.1",
"koa-compose": "^4.1.0",
"koa-connect": "^2.1.0",
"koa-send": "^5.0.1",
"koa-session": "^7.0.2",
"log4js": "^6.9.1",
"minimatch": "^10.0.3",
"mysql2": "^3.15.2",
"node-cron": "^4.2.1",
"path-is-absolute": "^2.0.0",
"path-to-regexp": "^8.3.0"
"path-to-regexp": "^8.3.0",
"unhead": "^2.0.19"
}
}

4
packages/server/src/db/index.ts

@ -0,0 +1,4 @@
import { drizzle } from "drizzle-orm/mysql2";
// You can specify any property from the mysql2 connection options
const db = drizzle({ connection: { uri: process.env.DATABASE_URL } });

8
packages/server/src/db/schema.ts

@ -0,0 +1,8 @@
import { int, mysqlTable, serial, varchar } from 'drizzle-orm/mysql-core';
export const usersTable = mysqlTable('users_table', {
id: serial().primaryKey(),
name: varchar({ length: 255 }).notNull(),
age: int().notNull(),
email: varchar({ length: 255 }).notNull().unique(),
});

2
packages/server/src/middleware/install.ts

@ -1,5 +1,5 @@
import { SsrMiddleWare } from "core/SsrMiddleWare"
import { SsrMiddleWare } from "../ssr"
import bodyParser from "koa-bodyparser"
import app from "@/app"
import ResponseTime from "./ResponseTime"

2
packages/core/src/SsrMiddleWare.ts → packages/server/src/ssr/index.ts

@ -89,7 +89,7 @@ export async function SsrMiddleWare(app: Koa, options?: { onDevViteClose?: Funct
} catch (e: Error | any) {
vite?.ssrFixStacktrace(e)
ctx.status = 500
console.error(e.stack)
console.error(e)
ctx.body = e.stack
}
await next()

4
scripts/build.js

@ -15,12 +15,14 @@ try {
console.log('📋 读取package.json文件...');
const rootPackageJson = JSON.parse(readFileSync(join(projectRoot, 'package.json'), 'utf8'));
const serverPackageJson = JSON.parse(readFileSync(join(projectRoot, 'packages/server/package.json'), 'utf8'));
const clientPackageJson = JSON.parse(readFileSync(join(projectRoot, 'packages/client/package.json'), 'utf8'));
// 2. 合并依赖
console.log('🔗 合并依赖...');
const mergedDependencies = {
...rootPackageJson.dependencies,
...serverPackageJson.dependencies
...serverPackageJson.dependencies,
...clientPackageJson.dependencies
};
// 3. 创建生产环境的package.json

16
scripts/fix-type-router.js

@ -6,13 +6,15 @@ const dtsPath = path.resolve(
"../node_modules/vue-router/dist/vue-router.d.ts"
);
const content = fs.readFileSync(dtsPath, "utf8");
if (fs.existsSync(dtsPath)) {
const content = fs.readFileSync(dtsPath, "utf8");
const fixedContent = content.replace(
/declare module ['"]vue['"]/g,
"declare module '@vue/runtime-core'"
);
const fixedContent = content.replace(
/declare module ['"]vue['"]/g,
"declare module '@vue/runtime-core'"
);
fs.writeFileSync(dtsPath, fixedContent, "utf8");
fs.writeFileSync(dtsPath, fixedContent, "utf8");
console.log("Fixed vue-router.d.ts module declaration.");
console.log("Fixed vue-router.d.ts module declaration.");
}

3
tsup.config.ts

@ -6,9 +6,10 @@ import fg from "fast-glob"
const jobsEntries = await fg(["packages/server/src/jobs/**/*.ts"], { });
const modulesEntries = await fg(["packages/server/src/modules/**/*.ts"], { });
console.log(process.env.NODE_ENV);
export default defineConfig({
entry: ["packages/server/src/booststap.ts", ...jobsEntries, ...modulesEntries],
entry: [...jobsEntries, ...modulesEntries, "packages/server/src/booststap.ts"],
format: "esm",
treeshake: true,
sourcemap: false,

18
tsup.jobs.config.ts

@ -1,18 +0,0 @@
import { defineConfig } from 'tsup'
import pkg from "./package.json";
import spkg from "./packages/server/package.json";
import fg from "fast-glob"
const entries = await fg(["packages/server/src/jobs/**/*.ts"], { });
export default defineConfig({
entry: entries,
format: 'esm',
sourcemap: false,
clean: false,
outDir: "dist/jobs",
external: [
...Object.keys(pkg.dependencies),
...Object.keys(spkg.dependencies),
]
})

18
tsup.modules.config.ts

@ -1,18 +0,0 @@
import { defineConfig } from 'tsup'
import pkg from "./package.json";
import spkg from "./packages/server/package.json";
import fg from "fast-glob"
const entries = await fg(["packages/server/src/modules/**/*.ts"], { });
export default defineConfig({
entry: entries,
format: 'esm',
sourcemap: false,
clean: false,
outDir: "dist/modules",
external: [
...Object.keys(pkg.dependencies),
...Object.keys(spkg.dependencies),
]
})
Loading…
Cancel
Save