226 lines
6.6 KiB
TypeScript
226 lines
6.6 KiB
TypeScript
import { defineConfig, type UserConfigExport } from "@tarojs/cli";
|
||
import TsconfigPathsPlugin from "tsconfig-paths-webpack-plugin";
|
||
import { GitRevisionPlugin } from "git-revision-webpack-plugin";
|
||
import { UnifiedWebpackPluginV5 } from 'weapp-tailwindcss/webpack'
|
||
import * as path from "path";
|
||
import devConfig from "./dev";
|
||
import prodConfig from "./prod";
|
||
|
||
const gitRevision = new GitRevisionPlugin();
|
||
|
||
const CIPluginFn = async () => {
|
||
// 可以在这里做一些异步事情, 比如请求接口获取配置
|
||
/**
|
||
* @typedef { import("@tarojs/plugin-mini-ci").CIOptions } CIOptions
|
||
* @type {CIOptions}
|
||
*/
|
||
return {
|
||
weapp: {
|
||
appid: "wxa080848726642f73",
|
||
privateKeyPath: "key/private.wxa080848726642f73.key",
|
||
},
|
||
tt: {
|
||
email: "字节小程序邮箱",
|
||
password: "字节小程序密码",
|
||
},
|
||
alipay: {
|
||
appid: "支付宝小程序appid",
|
||
toolId: "工具id",
|
||
privateKeyPath:
|
||
"密钥文件相对项目根目录的相对路径,例如 key/pkcs8-private-pem",
|
||
},
|
||
dd: {
|
||
appid: "钉钉小程序appid,即钉钉开放平台后台应用管理的 MiniAppId 选项",
|
||
token: "令牌,从钉钉后台获取",
|
||
},
|
||
swan: {
|
||
token: "鉴权需要的token令牌",
|
||
},
|
||
// 版本号
|
||
version: "1.0.0",
|
||
// 版本发布描述
|
||
desc: "版本描述",
|
||
};
|
||
};
|
||
|
||
// https://taro-docs.jd.com/docs/next/config#defineconfig-辅助函数
|
||
export default defineConfig<"webpack5">(async (merge, {}) => {
|
||
const baseConfig: UserConfigExport<"webpack5"> = {
|
||
alias: {
|
||
"@/components": path.resolve(__dirname, "..", "src/components"),
|
||
"@/store": path.resolve(__dirname, "..", "src/store"),
|
||
"@/constants": path.resolve(__dirname, "..", "src/constants"),
|
||
"@/service": path.resolve(__dirname, "..", "src/service"),
|
||
"@/utils": path.resolve(__dirname, "..", "src/utils"),
|
||
"@/config": path.resolve(__dirname, "..", "src/config"),
|
||
},
|
||
projectName: "app-client",
|
||
date: "2023-9-18",
|
||
plugins: [
|
||
"@tarojs/plugin-html",
|
||
"@tarojs/plugin-http",
|
||
["@tarojs/plugin-mini-ci", CIPluginFn],
|
||
['@tarojs/plugin-inject', {
|
||
components: {
|
||
View: {
|
||
"aria-label": "",
|
||
"aria-role": ""
|
||
},
|
||
},
|
||
}]
|
||
],
|
||
designWidth(input) {
|
||
// 配置 NutUI 375 尺寸
|
||
// @ts-ignore
|
||
if (input?.file?.replace(/\\+/g, "/").indexOf("@nutui") > -1) {
|
||
return 375;
|
||
}
|
||
// 全局使用 Taro 默认的 750 尺寸
|
||
return 750;
|
||
},
|
||
deviceRatio: {
|
||
640: 2.34 / 2,
|
||
750: 1,
|
||
375: 2,
|
||
828: 1.81 / 2,
|
||
},
|
||
sourceRoot: "src",
|
||
outputRoot: `dist/${process.env.TARO_ENV}`,
|
||
defineConstants: {},
|
||
copy: {
|
||
patterns: [
|
||
{
|
||
from: "src/ext.json",
|
||
to: "dist/weapp/ext.json",
|
||
},
|
||
],
|
||
options: {},
|
||
},
|
||
framework: "react",
|
||
compiler: {
|
||
type: "webpack5",
|
||
prebundle: {
|
||
enable: false,
|
||
force: true,
|
||
exclude: ["@nutui/nutui-react-taro", "@nutui/icons-react-taro"],
|
||
},
|
||
},
|
||
cache: {
|
||
enable: false, // Webpack 持久化缓存配置,建议开启。默认配置请参考:https://docs.taro.zone/docs/config-detail#cache
|
||
},
|
||
mini: {
|
||
compile: { include: [path.resolve(__dirname, "../node_modules")] },
|
||
debugReact: true,
|
||
optimizeMainPackage: {
|
||
enable: true,
|
||
},
|
||
commonChunks: ["runtime", "vendors", "taro", "common"],
|
||
postcss: {
|
||
pxtransform: {
|
||
enable: true,
|
||
config: {
|
||
selectorBlackList: ["nut-"],
|
||
},
|
||
},
|
||
url: {
|
||
enable: true,
|
||
config: {
|
||
limit: 1024, // 设定转换尺寸上限
|
||
},
|
||
},
|
||
cssModules: {
|
||
enable: true, // 默认为 false,如需使用 css modules 功能,则设为 true
|
||
config: {
|
||
namingPattern: "module", // 转换模式,取值为 global/module
|
||
generateScopedName: "[name]__[local]___[hash:base64:5]",
|
||
},
|
||
},
|
||
},
|
||
webpackChain(chain) {
|
||
chain
|
||
.merge({
|
||
plugin: {
|
||
install: {
|
||
plugin: UnifiedWebpackPluginV5,
|
||
args: [
|
||
{
|
||
appType: "taro",
|
||
injectAdditionalCssVarScope: true,
|
||
rem2rpx: true,
|
||
cssEntries: [
|
||
// 你 @import "weapp-tailwindcss"; 那个文件绝对路径
|
||
path.resolve(__dirname, '../src/app.css')
|
||
]
|
||
},
|
||
],
|
||
},
|
||
},
|
||
})
|
||
.resolve.plugin("tsconfig-paths")
|
||
.use(TsconfigPathsPlugin);
|
||
},
|
||
},
|
||
h5: {
|
||
compile: { include: [path.resolve(__dirname, "../node_modules")] },
|
||
publicPath: "/",
|
||
staticDirectory: "static",
|
||
router: {
|
||
mode: "browser",
|
||
},
|
||
output: {
|
||
filename: "pages/js/[name].[hash:8].js",
|
||
chunkFilename: "pages/js/[name].[chunkhash:8].js",
|
||
},
|
||
miniCssExtractPluginOption: {
|
||
ignoreOrder: true,
|
||
filename: "pages/css/[name].[hash].css",
|
||
chunkFilename: "pages/css/[name].[chunkhash].css",
|
||
},
|
||
postcss: {
|
||
pxtransform: {
|
||
enable: true,
|
||
config: {
|
||
baseFontSize: 16,
|
||
minRootSize: 16,
|
||
maxRootSize: 40,
|
||
},
|
||
},
|
||
autoprefixer: {
|
||
enable: true,
|
||
config: {},
|
||
},
|
||
cssModules: {
|
||
enable: true, // 默认为 false,如需使用 css modules 功能,则设为 true
|
||
config: {
|
||
namingPattern: "module", // 转换模式,取值为 global/module
|
||
generateScopedName: "[name]__[local]___[hash:base64:5]",
|
||
},
|
||
},
|
||
},
|
||
webpackChain(chain) {
|
||
chain.resolve.plugin("tsconfig-paths").use(TsconfigPathsPlugin);
|
||
chain.merge({
|
||
plugins: [gitRevision],
|
||
});
|
||
chain.plugin("htmlWebpackPlugin").tap((args) => {
|
||
return [{ ...args[0], gitCommitId: gitRevision.commithash() }];
|
||
});
|
||
},
|
||
},
|
||
rn: {
|
||
appName: "taroDemo",
|
||
postcss: {
|
||
cssModules: {
|
||
enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true
|
||
},
|
||
},
|
||
},
|
||
};
|
||
if (process.env.NODE_ENV === "development") {
|
||
// 本地开发构建配置(不混淆压缩)
|
||
return merge({}, baseConfig, devConfig);
|
||
}
|
||
// 生产构建配置(默认开启压缩混淆等)
|
||
return merge({}, baseConfig, prodConfig);
|
||
});
|