修改项目 build 结构
This commit is contained in:
79
config/env.config.ts
Normal file
79
config/env.config.ts
Normal file
@@ -0,0 +1,79 @@
|
||||
/**
|
||||
* 统一环境配置(dev/sit/pr)
|
||||
* 构建时通过 APP_ENV 选择,defineConstants 注入业务代码
|
||||
* project.config.json 的 appid 由 scripts/sync-project-config.js 同步
|
||||
*/
|
||||
|
||||
export type EnvType = "dev" | "dev_local" | "sit" | "pr";
|
||||
|
||||
export interface EnvConfig {
|
||||
name: string;
|
||||
apiBaseURL: string;
|
||||
ossBaseURL: string;
|
||||
appid: string;
|
||||
timeout: number;
|
||||
enableLog: boolean;
|
||||
enableMock: boolean;
|
||||
customerService: {
|
||||
corpId: string;
|
||||
serviceUrl: string;
|
||||
};
|
||||
}
|
||||
|
||||
const baseConfig = {
|
||||
apiBaseURL: "https://tennis.bimwe.com",
|
||||
ossBaseURL: "https://bimwe-oss.oss-cn-shanghai.aliyuncs.com",
|
||||
appid: "wx815b533167eb7b53", // 测试号
|
||||
timeout: 15000,
|
||||
enableLog: true,
|
||||
enableMock: false,
|
||||
customerService: {
|
||||
corpId: "ww51fc969e8b76af82",
|
||||
serviceUrl: "https://work.weixin.qq.com/kfid/kfc64085b93243c5c91",
|
||||
},
|
||||
}
|
||||
|
||||
export const envConfigs: Record<EnvType, EnvConfig> = {
|
||||
// 本地开发:API 指向本地或测试服
|
||||
dev: {
|
||||
name: "DEV",
|
||||
// apiBaseURL: "http://localhost:9098",
|
||||
...baseConfig
|
||||
},
|
||||
// 本地联调:API 指向本机
|
||||
dev_local: {
|
||||
name: "DEV_LOCAL",
|
||||
|
||||
...Object.assign(baseConfig, {
|
||||
apiBaseURL: "http://localhost:9098",
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
// SIT 测试环境
|
||||
sit: {
|
||||
name: "SIT",
|
||||
...Object.assign(baseConfig, {
|
||||
apiBaseURL: "https://tennis.bimwe.com",
|
||||
})
|
||||
},
|
||||
|
||||
// PR 生产环境
|
||||
pr: {
|
||||
name: "PR",
|
||||
apiBaseURL: "https://youchang.qiongjingtiyu.com",
|
||||
ossBaseURL: "https://youchang2026.oss-cn-shanghai.aliyuncs.com",
|
||||
appid: "wx915ecf6c01bea4ec", // 生产小程序 appid,按实际填写
|
||||
timeout: 10000,
|
||||
enableLog: false,
|
||||
enableMock: false,
|
||||
customerService: {
|
||||
corpId: "ww9a2d9a5d9410c664",
|
||||
serviceUrl: "https://work.weixin.qq.com/kfid/kfcd355e162e0390684",
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export function getEnvConfig(env: EnvType): EnvConfig {
|
||||
return envConfigs[env];
|
||||
}
|
||||
@@ -2,11 +2,21 @@ import { defineConfig, type UserConfigExport } from '@tarojs/cli'
|
||||
import TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin'
|
||||
import devConfig from './dev'
|
||||
import prodConfig from './prod'
|
||||
// import vitePluginImp from 'vite-plugin-imp'
|
||||
import { getEnvConfig, type EnvType } from './env.config'
|
||||
import path from 'path'
|
||||
|
||||
// 环境:dev(本地) | dev_local(联调) | sit(测试) | pr(生产)
|
||||
const ENV_LIST: EnvType[] = ['dev', 'dev_local', 'sit', 'pr']
|
||||
|
||||
// https://taro-docs.jd.com/docs/next/config#defineconfig-辅助函数
|
||||
export default defineConfig<'webpack5'>(async (merge, { command, mode }) => {
|
||||
const appEnv = (
|
||||
(ENV_LIST.includes(mode as EnvType) ? mode : process.env.APP_ENV) ||
|
||||
(process.env.NODE_ENV === 'production' ? 'pr' : 'dev')
|
||||
) as EnvType
|
||||
|
||||
const envConfig = getEnvConfig(appEnv)
|
||||
|
||||
const baseConfig: UserConfigExport<'webpack5'> = {
|
||||
projectName: 'playBallTogether',
|
||||
date: '2025-8-9',
|
||||
@@ -22,6 +32,13 @@ export default defineConfig<'webpack5'>(async (merge, { command, mode }) => {
|
||||
outputRoot: 'dist',
|
||||
plugins: ['@tarojs/plugin-html'],
|
||||
defineConstants: {
|
||||
'process.env.APP_ENV': JSON.stringify(appEnv),
|
||||
'process.env.API_BASE_URL': JSON.stringify(envConfig.apiBaseURL),
|
||||
'process.env.OSS_BASE_URL': JSON.stringify(envConfig.ossBaseURL),
|
||||
'process.env.ENABLE_LOG': JSON.stringify(envConfig.enableLog),
|
||||
'process.env.TIMEOUT': JSON.stringify(envConfig.timeout),
|
||||
'process.env.CUSTOMER_CORP_ID': JSON.stringify(envConfig.customerService.corpId),
|
||||
'process.env.CUSTOMER_SERVICE_URL': JSON.stringify(envConfig.customerService.serviceUrl),
|
||||
},
|
||||
alias: {
|
||||
'@': path.resolve(__dirname, '..', 'src'),
|
||||
@@ -76,6 +93,9 @@ export default defineConfig<'webpack5'>(async (merge, { command, mode }) => {
|
||||
},
|
||||
// @ts-expect-error: Taro 类型定义缺少 mini.hot
|
||||
hot: true,
|
||||
projectConfig: {
|
||||
appid: envConfig.appid,
|
||||
},
|
||||
},
|
||||
h5: {
|
||||
publicPath: '/',
|
||||
|
||||
Reference in New Issue
Block a user