LAOP-mini/config/index.ts
2026-09-18 16:54:23 +08:00

129 lines
3.9 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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';
// https://taro-docs.jd.com/docs/next/config#defineconfig-辅助函数
export default defineConfig<'webpack5'>(async (merge, { command, mode }) => {
const baseConfig: UserConfigExport<'webpack5'> = {
projectName: 'taro_template',
date: '2025-12-10',
designWidth: 375,
deviceRatio: {
640: 2.34 / 2,
750: 1,
375: 2,
828: 1.81 / 2,
},
sourceRoot: 'src',
outputRoot: process.env.TARO_OUTPUT_DIR || 'dist',
plugins: ['@tarojs/plugin-html'],
defineConstants: {},
copy: {
patterns: [],
options: {},
},
framework: 'react',
compiler: {
type: 'webpack5',
prebundle: {
enable: false,
},
},
cache: {
enable: false, // Webpack 持久化缓存配置,建议开启。默认配置请参考:https://docs.taro.zone/docs/config-detail#cache
},
mini: {
// 图片资源不内联为 base64,统一以包内文件路径引用:
// 关注引导弹窗的"保存图片"(saveImageToPhotosAlbum)要求真实文件路径,
// base64 data URL 会导致保存失败
imageUrlLoaderOption: {
limit: 0,
},
postcss: {
pxtransform: {
enable: true,
config: {
selectorBlackList: ['nut-'],
},
},
cssModules: {
enable: true, // 开启 CSS Modules
config: {
namingPattern: 'module', // 仅 *.module.scss 生效
generateScopedName: '[name]__[local]___[hash:base64:5]',
},
},
},
webpackChain(chain) {
chain.resolve.plugin('tsconfig-paths').use(TsconfigPathsPlugin);
},
},
h5: {
publicPath: '/',
staticDirectory: 'static',
output: {
filename: 'js/[name].[hash:8].js',
chunkFilename: 'js/[name].[chunkhash:8].js',
},
miniCssExtractPluginOption: {
ignoreOrder: true,
filename: 'css/[name].[hash].css',
chunkFilename: 'css/[name].[chunkhash].css',
},
postcss: {
autoprefixer: {
enable: true,
config: {},
},
cssModules: {
enable: true, // 开启 CSS Modules
config: {
namingPattern: 'module', // 仅 *.module.scss 生效
generateScopedName: '[name]__[local]___[hash:base64:5]',
},
},
pxtransform: {
enable: true,
config: {
selectorBlackList: ['body'],
baseFontSize: 37.5,
unitPrecision: 5,
},
},
},
webpackChain(chain) {
chain.resolve.plugin('tsconfig-paths').use(TsconfigPathsPlugin);
},
},
rn: {
appName: 'taroDemo',
postcss: {
cssModules: {
enable: true,
},
},
},
};
if (process.env.NODE_ENV === 'development') {
// 本地开发构建配置(不混淆压缩)
const config = merge({}, baseConfig, devConfig);
config.defineConstants = {
...baseConfig.defineConstants,
'process.env.API_BASE_URL': JSON.stringify('http://localhost:8081/laop'),
'process.env.FILE_BASE_URL': JSON.stringify('http://localhost:8081/laop'),
};
return config;
}
// 生产构建配置(默认开启压缩混淆等)
const config = merge({}, baseConfig, prodConfig);
config.defineConstants = {
...baseConfig.defineConstants,
// TODO: 上线前替换为真实生产域名(如 https://api.example.com/laop)
// 当前使用 127.0.0.1 仅适用于本机微信开发者工具调试;真机预览需改为局域网 IP
'process.env.API_BASE_URL': JSON.stringify('http://127.0.0.1:8081/laop'),
'process.env.FILE_BASE_URL': JSON.stringify('http://127.0.0.1:8081/laop'),
};
return config;
});