go-dy/bin/index.js
2025-10-28 16:50:24 +08:00

114 lines
3.3 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const path = require('path');
const consola = require('consola');
const { exec } = require('child_process');
const Fs = require('./fs');
class Index {
constructor() {
this.fs = new Fs();
}
start() {
// console.log('argv', argv);
console.log('✨ Start');
this.command = process.argv[2];
this.appname = process.argv[3];
this.initConfig();
const check = this.checkCommand();
if (check) {
consola.success(`参数校验完成`);
this.executeCommand();
}
}
initConfig() {
consola.info('正在初始化配置');
try {
const string = this.fs.readFile(
path.join(__dirname, '../config/index.json')
);
this.appConfig = JSON.parse(string);
} catch (error) {
consola.error('初始化失败, 错误信息如下:', error);
}
}
checkCommand() {
consola.success('初始化完成');
if (!['dev', 'build'].includes(this.command)) {
consola.error('命令输入错误,请检查⚠️⚠️⚠️');
return false;
}
if (!this.appname) {
consola.error('appname不能为空⚠');
return false;
}
const applist = Object.keys(this.appConfig);
if (!applist.includes(this.appname)) {
consola.error(`app"${this.appname}"不在预期范围内,请检查⚠️⚠️⚠️`);
return false;
}
return true;
}
executeCommand() {
const config = JSON.stringify(this.appConfig[this.appname]);
const string = `VITE_APP_CONFIG="${config}"\nVITE_APP_NAME=${this.appname}`;
if (this.command === 'build') {
consola.info(`正在写入build配置`);
const prodFilePath = path.join(__dirname, '../.env.production');
this.fs.writeFile(prodFilePath, string, (status) => {
if (status) {
consola.success(`配置完成,开始打包`);
this.build();
}
});
}
if (this.command === 'dev') {
consola.info(`正在写入服务配置`);
const devFilePath = path.join(__dirname, '../.env.development');
this.fs.writeFile(devFilePath, string, (status) => {
if (status) {
consola.success(`配置完成,开始启动服务`);
this.server();
}
});
}
}
build() {
const ls = exec('vite build');
ls.stdout.on('data', (data) => {
consola.info(`build data: ${data}`);
});
ls.stderr.on('data', (data) => {
consola.error(`error: ${data}`);
});
ls.on('close', (code) => {
consola.success(`打包完成✅`);
});
}
server() {
const ls = exec('vite --port 3001 --host');
ls.stdout.on('data', (data) => {
console.log(data);
});
ls.stderr.on('data', (data) => {
console.log(data);
});
ls.on('close', (code) => {
consola.success(`服务已经关闭`);
});
}
}
const index = new Index();
index.start();