Files
天天的鸟蛋蛋 b9655a5ab1 SnowCat 雪猫底层全源码:NapCat 4.18.28 底座 + SnowLuma 能力移植 + V8 通道适配 9.9.37
26 包 monorepo(TS 全源码):
- snowcat-core: NT 内核 API 封装 + listener(含 9.9.37 六回调适配)+ Packet 发包
- snowcat-onebot: OneBot v11 全动作 + MCP Streamable HTTP 适配器 + 稳定线
- snowcat-webui-frontend/backend: 雪猫控制台(React+HeroUI)
- snowcat-shell: 单文件 bundle 出口(vite inlineDynamicImports)
- snowcat-native: napi2native / MoeHoo / ffmpeg / pty 运行时
- 56 项 SnowLuma 独门动作移植(qzone 全家桶/群相册/装扮/闪照/收藏)
- 工具件: 解包器/启动器/便携制作器/doctor

GitHub 关联已全量指向 DandanLLab/SnowCatQQ
2026-11-12 06:27:36 +08:00

82 lines
2.9 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import cp from 'vite-plugin-cp';
import { defineConfig, PluginOption, UserConfig } from 'vite';
import path, { resolve } from 'path';
import nodeResolve from '@rollup/plugin-node-resolve';
import { builtinModules } from 'module';
import napcatVersion from 'snowcat-vite/vite-plugin-version.js';
import { autoIncludeTSPlugin } from 'snowcat-vite/vite-auto-include.js';
import react from '@vitejs/plugin-react-swc';
// 依赖排除
const external = [
'ws',
'express',
'electron',
];
const nodeModules = [...builtinModules, builtinModules.map((m) => `node:${m}`), 'node:sqlite'].flat();
const ShellBaseConfigPlugin: PluginOption[] = [
react({ tsDecorators: true }),
autoIncludeTSPlugin({
entries: [
{ entry: 'snowcat.ts', dir: path.resolve(__dirname, '../snowcat-core/protocol') },
{ entry: 'snowcat.ts', dir: path.resolve(__dirname, '../snowcat-onebot/action/test') },
],
}),
cp({
targets: [
{ src: '../snowcat-native/', dest: 'dist/native', flatten: false },
{ src: '../snowcat-webui-frontend/dist/', dest: 'dist/static/', flatten: false },
{ src: '../snowcat-webui-backend/src/assets/sw_template.js', dest: 'dist/static/' },
{ src: '../snowcat-core/external/napcat.json', dest: 'dist/config/' },
{ src: '../../package.json', dest: 'dist' },
{ src: '../snowcat-shell-loader', dest: 'dist' },
],
}),
nodeResolve(),
napcatVersion(),
];
const ShellBaseConfig = (source_map: boolean = false) =>
defineConfig({
resolve: {
conditions: ['node', 'default'],
alias: {
'@/snowcat-core': resolve(__dirname, '../snowcat-core'),
'@/snowcat-common': resolve(__dirname, '../snowcat-common'),
'@/snowcat-onebot': resolve(__dirname, '../snowcat-onebot'),
'@/snowcat-pty': resolve(__dirname, '../snowcat-pty'),
'@/snowcat-dpapi': resolve(__dirname, '../snowcat-dpapi'),
'@/snowcat-webui-backend': resolve(__dirname, '../snowcat-webui-backend'),
'@/snowcat-image-size': resolve(__dirname, '../snowcat-image-size'),
'@/snowcat-protocol': resolve(__dirname, '../snowcat-protocol'),
},
},
build: {
sourcemap: source_map,
target: 'esnext',
minify: source_map ? false : 'esbuild',
lib: {
// SnowCat:单文件 napcat.mjs(QQ utilityProcess 对分块 ESM 相对导入兼容差)
entry: { napcat: path.resolve(__dirname, 'snowcat.ts') },
formats: ['es'],
fileName: () => 'napcat.mjs',
},
rollupOptions: {
external: [...nodeModules, ...external],
output: { inlineDynamicImports: true },
},
},
});
export default defineConfig(({ mode }): UserConfig => {
if (mode === 'development') {
return {
...ShellBaseConfig(true),
plugins: [...ShellBaseConfigPlugin],
};
}
return {
...ShellBaseConfig(),
plugins: [...ShellBaseConfigPlugin],
};
});