* 控制台传入的参数
*/
export interface CliOption {
clientArgs: any;
clientOptions: any;
}
export enum VueVersion {
Vue3 = 'tinyvue',
}
* 服务端类型
*/
export enum ServerFrameworks {
EggJs = 'eggJs',
NestJs = 'nestJs',
SpringCloud = 'springCloud',
Skip = '',
SpringBoot = 'springboot',
}
* 低代码引擎选项
*/
export enum LowcodeEngine {
Include = 'lowcode-designer',
Skip = '',
}
export enum BuildTool {
Vite = 'vite',
Webpack = 'webpack',
Rspack = 'rspack',
Farm = 'farm',
}
export const buildConfigs = {
vite: ['webpack.config.js', 'rspack.config.js', 'farm.config.ts'],
webpack: ['config', 'rspack.config.js', 'farm.config.ts'],
rspack: ['config', 'webpack.config.js', 'farm.config.ts'],
farm: ['config', 'webpack.config.js', 'rspack.config.js'],
};
export const buildCommand = {
vite: 'vite build --config ./config/vite.config.prod.ts',
webpack: 'webpack --config webpack.config.js',
rspack: 'rspack build',
farm: 'farm build',
};
export const devCommand = {
vite: 'vite --config ./config/vite.config.dev.ts --port 3031',
webpack: 'webpack-dev-server --progress --config webpack.config.js',
rspack: 'rspack serve',
farm: 'farm',
};
export const removedCommand = [
'dev:wp',
'dev:rp',
'build:wp',
'build:rp',
'dev',
'dev:fr',
'build:fr',
];
* 需要删除的包
*/
export const removeDependencies = {
vite: ['style-resources-loader', 'vue-style-loader'],
webpack: [],
rspack: [],
farm: [],
};
* 需要删除的包
*/
export const devDependencies = {
vite: [
'@babel/preset-env',
'@babel/preset-typescript',
/@rspack\/.*/,
/webpack/,
'vue-loader',
'import-meta-loader',
'css-loader',
'core-js',
'babel-loader',
/@farmfe\/.*/,
],
rspack: [
/@vitejs\/.*/,
/vite-.*/,
'vite',
'webpack',
'webpack-cli',
'webpack-dev-server',
/@farmfe\/.*/,
],
webpack: [
/@vitejs\/.*/,
/vite-.*/,
'vite',
'@rspack/cli',
'@rspack/core',
/@farmfe\/.*/,
],
farm: [
'webpack',
'webpack-cli',
'webpack-dev-server',
/webpack-.*/,
/@rspack\/.*/,
],
};
* 初始化问题的选项 -> 选择的值
*/
export interface ProjectInfo {
description: string;
framework: string;
name: string;
serverFramework: ServerFrameworks;
lowcodeEngine?: LowcodeEngine;
serverConfirm?: boolean;
dialect?: string;
host?: string;
port?: number;
database?: string;
username?: string;
password?: string;
redisHost?: string;
redisPort?: number;
buildTool: BuildTool;
vueVersion: VueVersion;
}