index.ts 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import path from 'node:path'
  2. import { mkdirSync, writeFileSync } from 'node:fs'
  3. import { defineConfig } from '@tarojs/cli'
  4. import { outputDirectory, readPublicConfig, resolveEnvironment } from './environments'
  5. import packageJson from '../package.json'
  6. import project from '../project.config.json'
  7. export default defineConfig<'vite'>(() => {
  8. const environment = resolveEnvironment(process.env.APP_ENV)
  9. const platform = process.env.TARO_ENV ?? 'weapp'
  10. // Taro loads .env files for the explicit --mode before evaluating this config.
  11. const publicConfig = readPublicConfig(process.env)
  12. const metadataDirectory = path.resolve(__dirname, '../.cache/build', platform, environment.name)
  13. const metadata = {
  14. environment: environment.name, label: publicConfig.label, platform,
  15. version: packageJson.version, dataSource: environment.dataSource, builtAt: new Date().toISOString(),
  16. }
  17. mkdirSync(metadataDirectory, { recursive: true })
  18. writeFileSync(path.join(metadataDirectory, 'build-info.json'), `${JSON.stringify(metadata, null, 2)}\n`)
  19. if (platform === 'weapp') {
  20. const weappProject = {
  21. ...project, miniprogramRoot: './', appid: process.env.TARO_APP_ID || project.appid,
  22. projectname: `math.miniapp-${environment.name}`,
  23. }
  24. writeFileSync(path.join(metadataDirectory, 'project.config.json'), `${JSON.stringify(weappProject, null, 2)}\n`)
  25. }
  26. return {
  27. projectName: `math.miniapp-${environment.name}`,
  28. date: '2026-10-26',
  29. designWidth: 750,
  30. deviceRatio: { 375: 2, 640: 1.17, 750: 1, 828: 0.905 },
  31. sourceRoot: 'src',
  32. outputRoot: outputDirectory(platform),
  33. framework: 'react',
  34. compiler: 'vite',
  35. alias: { '@': path.resolve(__dirname, '../src') },
  36. defineConstants: {
  37. __APP_ENV__: JSON.stringify(environment.name),
  38. __APP_ENV_LABEL__: JSON.stringify(publicConfig.label),
  39. __APP_VERSION__: JSON.stringify(packageJson.version),
  40. },
  41. copy: {
  42. patterns: [
  43. { from: `.cache/build/${platform}/${environment.name}/build-info.json`, to: `${outputDirectory(platform)}/build-info.json` },
  44. ...(platform === 'weapp' ? [{ from: `.cache/build/${platform}/${environment.name}/project.config.json`, to: `${outputDirectory(platform)}/project.config.json` }] : []),
  45. ],
  46. options: {},
  47. },
  48. mini: { postcss: { pxtransform: { enable: true }, cssModules: { enable: false } } },
  49. h5: {
  50. publicPath: '/',
  51. staticDirectory: 'static',
  52. router: { mode: 'hash' },
  53. devServer: { host: '127.0.0.1', port: 10086 },
  54. postcss: { pxtransform: { enable: true, config: { maxRootSize: 25.6 } }, autoprefixer: { enable: true }, cssModules: { enable: false } },
  55. },
  56. }
  57. })