32 lines
1.1 KiB
JavaScript
32 lines
1.1 KiB
JavaScript
const { execSync } = require('child_process');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const ora = require('ora');
|
|
|
|
function setupModuleFederation() {
|
|
const spinner = ora('🔗 Setting up Module Federation...').start();
|
|
try {
|
|
execSync('npm install --save-dev @originjs/vite-plugin-federation', { stdio: 'inherit' });
|
|
|
|
const configPath = path.resolve('vite.config.js');
|
|
let config = fs.readFileSync(configPath, 'utf8');
|
|
|
|
if (!config.includes('@originjs/vite-plugin-federation')) {
|
|
const importLine = "import federation from '@originjs/vite-plugin-federation';\n";
|
|
config = importLine + config;
|
|
config = config.replace(/plugins:\s*\[(.*?)\]/s, (match, p1) => {
|
|
const plugins = p1.trim();
|
|
return `plugins: [${plugins ? plugins + ', ' : ''}federation({})]`;
|
|
});
|
|
fs.writeFileSync(configPath, config);
|
|
}
|
|
|
|
spinner.succeed('🔗 Module Federation configured.');
|
|
} catch (error) {
|
|
spinner.fail('❌ Failed to set up Module Federation.');
|
|
console.error(error);
|
|
}
|
|
}
|
|
|
|
module.exports = { setupModuleFederation };
|