import path from 'node:path' import { mkdirSync, writeFileSync } from 'node:fs' import { defineConfig } from '@tarojs/cli' import { outputDirectory, readPublicConfig, resolveEnvironment } from './environments' import packageJson from '../package.json' import project from '../project.config.json' export default defineConfig<'vite'>(() => { const environment = resolveEnvironment(process.env.APP_ENV) const platform = process.env.TARO_ENV ?? 'weapp' // Taro loads .env files for the explicit --mode before evaluating this config. const publicConfig = readPublicConfig(process.env) const metadataDirectory = path.resolve(__dirname, '../.cache/build', platform, environment.name) const metadata = { environment: environment.name, label: publicConfig.label, platform, version: packageJson.version, dataSource: environment.dataSource, builtAt: new Date().toISOString(), } mkdirSync(metadataDirectory, { recursive: true }) writeFileSync(path.join(metadataDirectory, 'build-info.json'), `${JSON.stringify(metadata, null, 2)}\n`) if (platform === 'weapp') { const weappProject = { ...project, miniprogramRoot: './', appid: process.env.TARO_APP_ID || project.appid, projectname: `math.miniapp-${environment.name}`, } writeFileSync(path.join(metadataDirectory, 'project.config.json'), `${JSON.stringify(weappProject, null, 2)}\n`) } return { projectName: `math.miniapp-${environment.name}`, date: '2026-10-26', designWidth: 750, deviceRatio: { 375: 2, 640: 1.17, 750: 1, 828: 0.905 }, sourceRoot: 'src', outputRoot: outputDirectory(platform), framework: 'react', compiler: 'vite', alias: { '@': path.resolve(__dirname, '../src') }, defineConstants: { __APP_ENV__: JSON.stringify(environment.name), __APP_ENV_LABEL__: JSON.stringify(publicConfig.label), __APP_VERSION__: JSON.stringify(packageJson.version), }, copy: { patterns: [ { from: `.cache/build/${platform}/${environment.name}/build-info.json`, to: `${outputDirectory(platform)}/build-info.json` }, ...(platform === 'weapp' ? [{ from: `.cache/build/${platform}/${environment.name}/project.config.json`, to: `${outputDirectory(platform)}/project.config.json` }] : []), ], options: {}, }, mini: { postcss: { pxtransform: { enable: true }, cssModules: { enable: false } } }, h5: { publicPath: '/', staticDirectory: 'static', router: { mode: 'hash' }, devServer: { host: '127.0.0.1', port: 10086 }, postcss: { pxtransform: { enable: true, config: { maxRootSize: 25.6 } }, autoprefixer: { enable: true }, cssModules: { enable: false } }, }, } })