This commit is contained in:
KuroSago@outlook.com 2024-08-28 17:50:28 +08:00
parent bfec2ad8ee
commit cc650681d2
6 changed files with 100 additions and 207 deletions

View File

@ -4,6 +4,7 @@ import { UnifiedViteWeappTailwindcssPlugin as uvtw } from 'weapp-tailwindcss/vit
import autoImport from 'unplugin-auto-import/vite';
import viteRestart from 'vite-plugin-restart';
import { visualizer } from 'rollup-plugin-visualizer';
import { appProvider, buildThemeConfig, createComponents } from '../vite/plugins/index';
import { WeappTailwindcssDisabled, isH5 } from './platform';
interface VitePluginConfig {
@ -14,6 +15,9 @@ export function createVitePlugins({ isProd }: VitePluginConfig): PluginOption[]
return [
// @ts-expect-error TODO uni() 会报错uni is not a function,暂时使用此方式解决
uni?.default(),
appProvider(),
buildThemeConfig(),
createComponents(),
uvtw({
rem2rpx: true,
disabled: WeappTailwindcssDisabled,

View File

@ -1,112 +0,0 @@
import { cacheCipher } from '@/settings/encryptionSetting';
import type { EncryptionParams } from '@/utils/cipher';
import { AesEncryption } from '@/utils/cipher';
import { isNullOrUnDef } from '@/utils/is';
export interface CreateStorageParams extends EncryptionParams {
prefixKey: string
hasEncrypt: boolean
timeout?: number | null
}
export function createStorage({
prefixKey = '',
key = cacheCipher.key,
iv = cacheCipher.iv,
timeout = null,
hasEncrypt = true,
}: Partial<CreateStorageParams> = {}) {
if (hasEncrypt && [key.length, iv.length].some(item => item !== 16)) {
throw new Error('When hasEncrypt is true, the key or iv must be 16 bits!');
}
const encryption = new AesEncryption({ key, iv });
/**
* Cache class
* Construction parameters can be passed into sessionStorage, localStorage,
* @class Cache
* @example
*/
class Storage {
private prefixKey?: string;
private encryption: AesEncryption;
private hasEncrypt: boolean;
constructor() {
this.prefixKey = prefixKey;
this.encryption = encryption;
this.hasEncrypt = hasEncrypt;
}
private getKey(key: string) {
return `${this.prefixKey}${key}`.toUpperCase();
}
/**
* Set cache
* @param {string} key
* @param {*} value
* @param {*} expire Expiration time in seconds
* @memberof Cache
*/
set(key: string, value: any, expire: number | null = timeout) {
try {
const stringData = JSON.stringify({
value,
time: Date.now(),
expire: !isNullOrUnDef(expire) ? new Date().getTime() + expire * 1000 : null,
});
const stringifyValue = this.hasEncrypt ? this.encryption.encryptByAES(stringData) : stringData;
uni.setStorageSync(this.getKey(key), stringifyValue);
} catch (err) {
throw new Error(`setStorageSync error: ${err}`);
}
}
/**
* Read cache
* @param {string} key
* @param {*} def
* @memberof Cache
*/
get<T = any>(key: string, def: any = null): T {
const val = uni.getStorageSync(this.getKey(key));
if (!val)
return def;
try {
const decVal = this.hasEncrypt ? this.encryption.decryptByAES(val) : val;
const data = JSON.parse(decVal);
const { value, expire } = data;
if (isNullOrUnDef(expire) || expire < new Date().getTime()) {
this.remove(key);
return def;
}
return value;
// eslint-disable-next-line unused-imports/no-unused-vars
} catch (e) {
return def;
}
}
/**
* Delete cache based on key
* @param {string} key
* @memberof Cache
*/
remove(key: string) {
uni.removeStorageSync(this.getKey(key));
}
/**
* Delete all caches of this instance
*/
clear(): void {
uni.clearStorageSync();
}
}
return new Storage();
}

View File

@ -24,7 +24,7 @@ const ContentType = {
*/
const alovaInstance = createAlova({
baseURL: BASE_URL,
localCache: null, // 设置为null即可全局关闭全部请求缓存
// localCache: null, // 设置为null即可全局关闭全部请求缓存
...AdapterUniapp({
/* #ifndef APP-PLUS */
mockRequest: isUseMock() ? mockAdapter : undefined, // APP 平台无法使用mock

View File

@ -1,4 +1,5 @@
{ //
{
//
"compilerOptions": {
"target": "ESNext", //
"jsx": "preserve",

View File

@ -1,97 +1,98 @@
/**
* unocss defineConfig
* @link unocss: https://github.com/unocss/unocss
* @link unocss-preset-weapp: https://github.com/MellowCo/unocss-preset-weapp
*/
import presetWeapp from 'unocss-preset-weapp';
import { extractorAttributify, transformerClass } from 'unocss-preset-weapp/transformer';
import { presetIcons } from 'unocss';
import transformerDirectives from '@unocss/transformer-directives';
/**
* unocss defineConfig
* @link unocss: https://github.com/unocss/unocss
* @link unocss-preset-weapp: https://github.com/MellowCo/unocss-preset-weapp
* */
import presetWeapp from 'unocss-preset-weapp'
import { extractorAttributify, transformerClass } from 'unocss-preset-weapp/transformer'
import { presetIcons } from 'unocss'
const { presetWeappAttributify, transformerAttributify } = extractorAttributify();
import transformerDirectives from '@unocss/transformer-directives'
export default {
presets: [
// https://github.com/MellowCo/unocss-preset-weapp
presetWeapp(),
// attributify autocomplete
presetWeappAttributify(),
presetIcons(),
],
shortcuts: [
{
'border-base': 'border border-gray-500_10',
'center': 'flex justify-center items-center',
},
],
transformers: [
transformerDirectives({
enforce: 'pre',
}),
const { presetWeappAttributify, transformerAttributify } = extractorAttributify()
// https://github.com/MellowCo/unocss-preset-weapp/tree/main/src/transformer/transformerAttributify
transformerAttributify(),
// https://github.com/MellowCo/unocss-preset-weapp/tree/main/src/transformer/transformerClass
transformerClass(),
],
theme: {
extend: {
opacity: {
disabled: 'var(--opacity-disabled)',
export default {
presets: [
// https://github.com/MellowCo/unocss-preset-weapp
presetWeapp(),
// attributify autocomplete
presetWeappAttributify(),
presetIcons(),
],
shortcuts: [
{
'border-base': 'border border-gray-500_10',
'center': 'flex justify-center items-center',
},
},
colors: {
primary: 'var(--colors-primary)',
secondary: 'var(--colors-secondary)',
accent: 'var(--colors-accent)',
success: 'var(--colors-success)',
warning: 'var(--colors-warning)',
error: 'var(--colors-error)',
disable: 'var(--colors-disable)',
danger: 'var(--colors-danger)',
mark: 'var(--colors-mark)',
title: 'var(--colors-title)',
subtitle: 'var(--colors-subtitle)',
paragraph: 'var(--colors-paragraph)',
fontColorblack: 'var(--colors-fontColorblack)',
fontColorPrimary: 'var(--colors-fontColorPrimary)',
fontColorInverse: 'var(--colors-fontColorInverse)',
fontColorGrey: 'var(--colors-fontColorGrey)',
fontColorPlaceholder: 'var(--colors-fontColorPlaceholder)',
fontColorDisable: 'var(--colors-fontColorDisable)',
fontColorBottomText: 'var(--colors-fontColorBottomText)',
container: 'var(--colors-container)',
page: 'var(--colors-page)',
containerInverse: 'var(--colors-containerInverse)',
containerHover: 'var(--colors-containerHover)',
secondaryHover: 'var(--colors-secondaryHover)',
containerMask: 'var(--colors-containerMask)',
iconButton: 'var(--colors-iconButton)',
borderColor: 'var(--colors-borderColor)',
},
fontSize: {
sm: 'var(--fontSize-sm)',
base: 'var(--fontSize-base)',
lg: 'var(--fontSize-lg)',
title: 'var(--fontSize-title)',
subtitle: 'var(--fontSize-subtitle)',
paragraph: 'var(--fontSize-paragraph)',
},
borderRadius: {
sm: 'var(--borderRadius-sm)',
base: 'var(--borderRadius-base)',
lg: 'var(--borderRadius-lg)',
circle: 'var(--borderRadius-circle)',
},
spacing: {
rowSm: 'var(--spacing-rowSm)',
rowBase: 'var(--spacing-rowBase)',
rowLg: 'var(--spacing-rowLg)',
colSm: 'var(--spacing-colSm)',
colBase: 'var(--spacing-colBase)',
colLg: 'var(--spacing-colLg)',
},
],
transformers: [
transformerDirectives({
enforce: 'pre',
}),
// https://github.com/MellowCo/unocss-preset-weapp/tree/main/src/transformer/transformerAttributify
transformerAttributify(),
// https://github.com/MellowCo/unocss-preset-weapp/tree/main/src/transformer/transformerClass
transformerClass(),
],
theme: {
"extend": {
"opacity": {
"disabled": "var(--opacity-disabled)"
}
},
};
"colors": {
"primary": "var(--colors-primary)",
"secondary": "var(--colors-secondary)",
"accent": "var(--colors-accent)",
"success": "var(--colors-success)",
"warning": "var(--colors-warning)",
"error": "var(--colors-error)",
"disable": "var(--colors-disable)",
"danger": "var(--colors-danger)",
"mark": "var(--colors-mark)",
"title": "var(--colors-title)",
"subtitle": "var(--colors-subtitle)",
"paragraph": "var(--colors-paragraph)",
"fontColorblack": "var(--colors-fontColorblack)",
"fontColorPrimary": "var(--colors-fontColorPrimary)",
"fontColorInverse": "var(--colors-fontColorInverse)",
"fontColorGrey": "var(--colors-fontColorGrey)",
"fontColorPlaceholder": "var(--colors-fontColorPlaceholder)",
"fontColorDisable": "var(--colors-fontColorDisable)",
"fontColorBottomText": "var(--colors-fontColorBottomText)",
"container": "var(--colors-container)",
"page": "var(--colors-page)",
"containerInverse": "var(--colors-containerInverse)",
"containerHover": "var(--colors-containerHover)",
"secondaryHover": "var(--colors-secondaryHover)",
"containerMask": "var(--colors-containerMask)",
"iconButton": "var(--colors-iconButton)",
"borderColor": "var(--colors-borderColor)"
},
"fontSize": {
"sm": "var(--fontSize-sm)",
"base": "var(--fontSize-base)",
"lg": "var(--fontSize-lg)",
"title": "var(--fontSize-title)",
"subtitle": "var(--fontSize-subtitle)",
"paragraph": "var(--fontSize-paragraph)"
},
"borderRadius": {
"sm": "var(--borderRadius-sm)",
"base": "var(--borderRadius-base)",
"lg": "var(--borderRadius-lg)",
"circle": "var(--borderRadius-circle)"
},
"spacing": {
"rowSm": "var(--spacing-rowSm)",
"rowBase": "var(--spacing-rowBase)",
"rowLg": "var(--spacing-rowLg)",
"colSm": "var(--spacing-colSm)",
"colBase": "var(--spacing-colBase)",
"colLg": "var(--spacing-colLg)"
}
}
}

View File

@ -10,7 +10,6 @@ import { defineConfig, loadEnv } from 'vite';
import TransformPages from 'uni-read-pages-vite';
import postcssPlugins from './postcss.config';
import { createVitePlugins, currentPlatform, resolveProxy } from './build';
import { appProvider, buildThemeConfig, createComponents } from './vite/plugins/index';
export default defineConfig(async ({ mode }) => {
const root = process.cwd();
@ -49,7 +48,7 @@ export default defineConfig(async ({ mode }) => {
host: true,
// open: true,
port: Number.parseInt(VITE_PORT!, 10),
proxy: resolveProxy([[VITE_PROXY_PREFIX, VITE_BASE_URL], [VITE_UPLOAD_PROXY_PREFIX, VITE_UPLOAD_URL]]),
proxy: resolveProxy([[VITE_PROXY_PREFIX as string, VITE_BASE_URL as string], [VITE_UPLOAD_PROXY_PREFIX as string, VITE_UPLOAD_URL as string]]),
},
// 构建配置
build: {