58 lines
1.6 KiB
TypeScript
58 lines
1.6 KiB
TypeScript
import { defineConfig } from 'vite';
|
||
import path from 'path';
|
||
import fs from 'fs';
|
||
|
||
// Read version from public/version.json
|
||
const versionPath = path.resolve(__dirname, 'public/version.json');
|
||
let appVersion = '0.0.0';
|
||
|
||
try {
|
||
if (fs.existsSync(versionPath)) {
|
||
const versionContent = fs.readFileSync(versionPath, 'utf-8');
|
||
const versionJson = JSON.parse(versionContent);
|
||
appVersion = versionJson.version || '0.0.0';
|
||
console.log(`[Vite SW] Loaded version from version.json: ${appVersion}`);
|
||
} else {
|
||
console.warn('[Vite SW] version.json not found at', versionPath);
|
||
}
|
||
} catch (e) {
|
||
console.error('[Vite SW] Failed to read version.json', e);
|
||
}
|
||
|
||
export default defineConfig(({ mode }) => {
|
||
const isDev = mode === 'development';
|
||
|
||
return {
|
||
root: __dirname,
|
||
publicDir: false, // 禁用 publicDir,避免将 public 目录下的文件复制到 outDir (也是 public)
|
||
resolve: {
|
||
alias: {
|
||
'@aitu/utils': path.resolve(__dirname, '../../packages/utils/src/index.ts'),
|
||
},
|
||
},
|
||
define: {
|
||
__APP_VERSION__: JSON.stringify(appVersion),
|
||
},
|
||
build: {
|
||
// Dev mode: output to public so dev server can serve it
|
||
// Prod mode: output to dist
|
||
outDir: isDev ? 'public' : '../../dist/apps/web',
|
||
emptyOutDir: false, // Don't empty outDir as it might contain other files
|
||
lib: {
|
||
entry: 'src/sw/index.ts',
|
||
name: 'sw',
|
||
formats: ['iife'],
|
||
fileName: () => 'sw.js'
|
||
},
|
||
rollupOptions: {
|
||
output: {
|
||
entryFileNames: 'sw.js',
|
||
assetFileNames: '[name].[ext]',
|
||
}
|
||
},
|
||
minify: !isDev,
|
||
sourcemap: isDev
|
||
}
|
||
};
|
||
});
|