- config: virtualHost + native-components 拷贝配置 - project.config: skylineRenderEnable=false 调试用 - app.config: 移除 lazyCodeLoading 注释(已在 config/index.ts 控制) - dev.ps1: WECHAT_DEV_MODE=false(真机测试用) - wiki: 更新 DevTools 卡死根因 + 构建模式说明 - CLAUDE.md: 添加 graphify 知识图谱规则
109 lines
4.3 KiB
TypeScript
109 lines
4.3 KiB
TypeScript
import { defineConfig } from '@tarojs/cli';
|
||
import path from 'path';
|
||
|
||
export default defineConfig(async (merge) => {
|
||
// 生产构建缺少加密密钥时发出警告(不阻断构建,但提示开发者/CI 配置)
|
||
if (process.env.NODE_ENV === 'production' && !process.env.TARO_APP_ENCRYPTION_KEY) {
|
||
console.warn('[config] ⚠ TARO_APP_ENCRYPTION_KEY 未设置,将回退到 .env 中的开发密钥');
|
||
console.warn('[config] 生产部署应通过 CI/CD 环境变量注入独立密钥');
|
||
}
|
||
|
||
const baseConfig = {
|
||
projectName: 'hms-miniprogram',
|
||
date: '2026-4-23',
|
||
designWidth: 375,
|
||
deviceRatio: { 640: 2.34 / 2, 750: 1, 375: 2, 828: 1.81 / 2 },
|
||
sourceRoot: 'src',
|
||
outputRoot: process.env.TARO_ENV === 'h5' ? 'dist-h5' : 'dist',
|
||
plugins: [],
|
||
defineConstants: {
|
||
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),
|
||
'process.env.TARO_APP_API_URL': JSON.stringify(process.env.TARO_APP_API_URL || 'http://localhost:3000/api/v1'),
|
||
'process.env.TARO_APP_ENCRYPTION_KEY': JSON.stringify(process.env.TARO_APP_ENCRYPTION_KEY || ''),
|
||
'process.env.TARO_APP_WX_TEMPLATE_APPOINTMENT': JSON.stringify(process.env.TARO_APP_WX_TEMPLATE_APPOINTMENT || ''),
|
||
'process.env.TARO_APP_WX_TEMPLATE_FOLLOWUP': JSON.stringify(process.env.TARO_APP_WX_TEMPLATE_FOLLOWUP || ''),
|
||
'process.env.TARO_APP_WX_TEMPLATE_REPORT': JSON.stringify(process.env.TARO_APP_WX_TEMPLATE_REPORT || ''),
|
||
'process.env.TARO_APP_WX_TEMPLATE_CRITICAL_ALERT': JSON.stringify(process.env.TARO_APP_WX_TEMPLATE_CRITICAL_ALERT || ''),
|
||
'process.env.TARO_APP_WX_TEMPLATE_HEALTH_ABNORMAL': JSON.stringify(process.env.TARO_APP_WX_TEMPLATE_HEALTH_ABNORMAL || ''),
|
||
'process.env.TARO_APP_WX_TEMPLATE_MEDICATION': JSON.stringify(process.env.TARO_APP_WX_TEMPLATE_MEDICATION || ''),
|
||
'process.env.TARO_APP_DEFAULT_TENANT_ID': JSON.stringify(process.env.TARO_APP_DEFAULT_TENANT_ID || ''),
|
||
'process.env.TARO_APP_DEV_USER': JSON.stringify(
|
||
process.env.NODE_ENV === 'production' ? '' : (process.env.TARO_APP_DEV_USER || '')
|
||
),
|
||
'process.env.TARO_APP_DEV_PASS': JSON.stringify(
|
||
process.env.NODE_ENV === 'production' ? '' : (process.env.TARO_APP_DEV_PASS || '')
|
||
),
|
||
},
|
||
copy: { patterns: [], options: {} },
|
||
framework: 'react',
|
||
compiler: 'webpack5',
|
||
alias: {
|
||
'@': path.resolve(__dirname, '..', 'src'),
|
||
},
|
||
sass: {
|
||
resource: ['src/styles/variables.scss'],
|
||
},
|
||
mini: {
|
||
virtualHost: true,
|
||
copy: {
|
||
patterns: [
|
||
{ from: 'src/native-components/', to: 'dist/native-components/', ignore: ['*.ts'] },
|
||
],
|
||
options: {},
|
||
},
|
||
compile: {
|
||
exclude: [],
|
||
include: [],
|
||
},
|
||
commonChunks: ['runtime', 'vendors', 'taro', 'common'],
|
||
addChunkPages(pages) {
|
||
// 主包 TabBar 页面保持 common chunk
|
||
const tabBarPages = new Set([
|
||
'pages/index/index',
|
||
'pages/health/index',
|
||
'pages/mall/index',
|
||
'pages/messages/index',
|
||
'pages/profile/index',
|
||
]);
|
||
pages.forEach((page) => {
|
||
if (page.name === 'app') return;
|
||
// 分包页面不注入 common chunk,由分包自己的 vendors.js 承载
|
||
if (page.name.startsWith('pages/pkg-')) return;
|
||
if (tabBarPages.has(page.name) || !page.name.startsWith('pages/')) {
|
||
page.chunks?.unshift('common');
|
||
}
|
||
});
|
||
},
|
||
miniCssExtractPluginOption: {
|
||
ignoreOrder: true,
|
||
},
|
||
postcss: {
|
||
pxtransform: { enable: true, config: {} },
|
||
cssModules: {
|
||
enable: false,
|
||
config: { namingPattern: 'module', generateScopedName: '[name]__[local]___[hash:base64:5]' },
|
||
},
|
||
},
|
||
},
|
||
h5: {
|
||
publicPath: '/',
|
||
staticDirectory: 'static',
|
||
postcss: {
|
||
autoprefixer: { enable: true, config: {} },
|
||
cssModules: {
|
||
enable: false,
|
||
config: { namingPattern: 'module', generateScopedName: '[name]__[local]___[hash:base64:5]' },
|
||
},
|
||
},
|
||
},
|
||
};
|
||
|
||
const devConfig = (await import('./dev')).default;
|
||
const prodConfig = (await import('./prod')).default;
|
||
|
||
if (process.env.NODE_ENV === 'production') {
|
||
return merge({}, baseConfig, prodConfig);
|
||
}
|
||
return merge({}, baseConfig, devConfig);
|
||
});
|