37 lines
1 KiB
JavaScript
37 lines
1 KiB
JavaScript
/**
|
|
* Hot-swaps tsconfig files to work around vite limitations.
|
|
* Based on idea from https://github.com/vitejs/vite/discussions/8483#discussioncomment-6830634
|
|
*/
|
|
|
|
import nodeFs from 'node:fs/promises';
|
|
import nodePath from 'node:path';
|
|
import { execa } from 'execa';
|
|
|
|
const rootDir = nodePath.resolve(import.meta.dirname, '../');
|
|
const tsConfig = nodePath.resolve(rootDir, 'tsconfig.json');
|
|
const tsConfigBak = nodePath.resolve(rootDir, 'tsconfig.json.bak');
|
|
const tsConfigVue = nodePath.resolve(rootDir, 'tsconfig.vue.json');
|
|
|
|
const mode = process.argv.slice(2).includes('--watch') ? 'watch' : 'build';
|
|
|
|
console.log('Staging tsconfig.vue.json as tsconfig.json...');
|
|
await nodeFs.rename(tsConfig, tsConfigBak);
|
|
await nodeFs.copyFile(tsConfigVue, tsConfig);
|
|
|
|
try {
|
|
console.log('Starting vite...');
|
|
await execa(
|
|
'vite',
|
|
mode === 'build'
|
|
? ['build']
|
|
: [],
|
|
{
|
|
stdout: process.stdout,
|
|
stderr: process.stderr,
|
|
},
|
|
);
|
|
} finally {
|
|
console.log('Restoring original tsconfig.json...');
|
|
await nodeFs.rm(tsConfig);
|
|
await nodeFs.rename(tsConfigBak, tsConfig);
|
|
}
|