This commit is contained in:
dap 2024-08-10 13:36:03 +08:00
commit acb365f9af
20 changed files with 267 additions and 218 deletions

View File

@ -17,11 +17,12 @@ categories:
- title: "🐞 Bug Fixes" - title: "🐞 Bug Fixes"
labels: labels:
- "bug" - "bug"
- title: 📝 Documentation updates - title: 📝 Documentation
labels: labels:
- "documentation" - "documentation"
- title: 👻 Maintenance - title: 👻 Maintenance
labels: labels:
- "perf"
- "chore" - "chore"
- "dependencies" - "dependencies"
collapse-after: 5 collapse-after: 5
@ -34,12 +35,16 @@ categories:
version-resolver: version-resolver:
major: major:
labels: labels:
- "major"
- "breaking" - "breaking"
minor: minor:
labels: labels:
- "feature" - "minor"
# - "feature"
patch: patch:
labels: labels:
- "patch"
- "feature"
- "bug" - "bug"
- "maintenance" - "maintenance"
- "docs" - "docs"

View File

@ -183,7 +183,7 @@
"*.env": "$(capture).env.*", "*.env": "$(capture).env.*",
"README.md": "README*,CHANGELOG*,LICENSE,CNAME", "README.md": "README*,CHANGELOG*,LICENSE,CNAME",
"package.json": "pnpm-lock.yaml,pnpm-workspace.yaml,.gitattributes,.gitignore,.gitpod.yml,.npmrc,.browserslistrc,.node-version,.git*,.tazerc.json", "package.json": "pnpm-lock.yaml,pnpm-workspace.yaml,.gitattributes,.gitignore,.gitpod.yml,.npmrc,.browserslistrc,.node-version,.git*,.tazerc.json",
"Dockerfile": "Dockerfile,.docker*,docker-entrypoint.sh,build-local-docker*", "Dockerfile": "Dockerfile,.docker*,docker-entrypoint.sh,build-local-docker*,nginx.conf",
"eslint.config.mjs": ".eslintignore,.prettierignore,.stylelintignore,.commitlintrc.*,.prettierrc.*,stylelint.config.*,.lintstagedrc.mjs,.ls-lint*,cspell.json", "eslint.config.mjs": ".eslintignore,.prettierignore,.stylelintignore,.commitlintrc.*,.prettierrc.*,stylelint.config.*,.lintstagedrc.mjs,.ls-lint*,cspell.json",
"tailwind.config.mjs": "postcss.*" "tailwind.config.mjs": "postcss.*"
}, },

View File

@ -23,7 +23,7 @@ FROM nginx:stable-alpine as production
RUN echo "types { application/javascript js mjs; }" > /etc/nginx/conf.d/mjs.conf RUN echo "types { application/javascript js mjs; }" > /etc/nginx/conf.d/mjs.conf
COPY --from=builder /app/apps/web-antd/dist /usr/share/nginx/html COPY --from=builder /app/apps/web-antd/dist /usr/share/nginx/html
COPY ./deploy/nginx.conf /etc/nginx/nginx.conf COPY ./nginx.conf /etc/nginx/nginx.conf
EXPOSE 8080 EXPOSE 8080

View File

@ -42,7 +42,7 @@
"@vben/utils": "workspace:*", "@vben/utils": "workspace:*",
"@vueuse/core": "^10.11.1", "@vueuse/core": "^10.11.1",
"dayjs": "^1.11.12", "dayjs": "^1.11.12",
"element-plus": "^2.7.8", "element-plus": "^2.8.0",
"pinia": "2.2.1", "pinia": "2.2.1",
"vue": "^3.4.37", "vue": "^3.4.37",
"vue-router": "^4.4.3" "vue-router": "^4.4.3"

View File

@ -23,6 +23,6 @@ function registerAnalytics() {
export function initHmPlugin() { export function initHmPlugin() {
if (inBrowser && import.meta.env.PROD) { if (inBrowser && import.meta.env.PROD) {
registerAnalytics(SITE_ID); registerAnalytics();
} }
} }

View File

@ -14,6 +14,13 @@ const customConfig: Linter.Config[] = [
'vue/require-default-prop': 'off', 'vue/require-default-prop': 'off',
}, },
}, },
{
files: ['packages/effects/**/**', 'packages/types/**/**'],
ignores: restrictedImportIgnores,
rules: {
'perfectionist/sort-interfaces': 'off',
},
},
{ {
// apps内部的一些基础规则 // apps内部的一些基础规则
files: ['apps/**/**'], files: ['apps/**/**'],
@ -50,6 +57,7 @@ const customConfig: Linter.Config[] = [
], ],
}, },
], ],
'perfectionist/sort-interfaces': 'off',
'regexp/no-unused-capturing-group': 'off', 'regexp/no-unused-capturing-group': 'off',
}, },
}, },

View File

@ -23,6 +23,6 @@
}, },
"dependencies": { "dependencies": {
"prettier": "^3.3.3", "prettier": "^3.3.3",
"prettier-plugin-tailwindcss": "^0.6.5" "prettier-plugin-tailwindcss": "^0.6.6"
} }
} }

View File

@ -51,7 +51,7 @@
"@tailwindcss/nesting": "0.0.0-insiders.565cd3e", "@tailwindcss/nesting": "0.0.0-insiders.565cd3e",
"@tailwindcss/typography": "^0.5.14", "@tailwindcss/typography": "^0.5.14",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"cssnano": "^7.0.4", "cssnano": "^7.0.5",
"postcss": "^8.4.41", "postcss": "^8.4.41",
"postcss-antd-fixes": "^0.2.0", "postcss-antd-fixes": "^0.2.0",
"postcss-import": "^16.1.0", "postcss-import": "^16.1.0",

View File

@ -29,7 +29,7 @@
"dependencies": { "dependencies": {
"@intlify/unplugin-vue-i18n": "^4.0.0", "@intlify/unplugin-vue-i18n": "^4.0.0",
"@jspm/generator": "^2.1.3", "@jspm/generator": "^2.1.3",
"cheerio": "1.0.0-rc.12", "cheerio": "1.0.0",
"get-port": "^7.1.0", "get-port": "^7.1.0",
"html-minifier-terser": "^7.2.0", "html-minifier-terser": "^7.2.0",
"nitropack": "^2.9.7", "nitropack": "^2.9.7",
@ -50,7 +50,7 @@
"sass": "^1.77.8", "sass": "^1.77.8",
"vite": "^5.4.0", "vite": "^5.4.0",
"vite-plugin-compression": "^0.5.1", "vite-plugin-compression": "^0.5.1",
"vite-plugin-dts": "4.0.1", "vite-plugin-dts": "4.0.2",
"vite-plugin-html": "^3.2.2" "vite-plugin-html": "^3.2.2"
} }
} }

View File

@ -73,15 +73,3 @@ http {
} }
} }
} }
# stream { # stream 模块配置和 http 模块在相同级别
# upstream redis {
# server 127.0.0.1:6379 max_fails=3 fail_timeout=30s;
# }
# server {
# listen 16379;
# proxy_connect_timeout 1s;
# proxy_timeout 3s;
# proxy_pass redis;
# }
# }

View File

@ -59,7 +59,7 @@
"@changesets/cli": "^2.27.7", "@changesets/cli": "^2.27.7",
"@ls-lint/ls-lint": "^2.2.3", "@ls-lint/ls-lint": "^2.2.3",
"@types/jsdom": "^21.1.7", "@types/jsdom": "^21.1.7",
"@types/node": "^22.1.0", "@types/node": "^22.2.0",
"@vben/commitlint-config": "workspace:*", "@vben/commitlint-config": "workspace:*",
"@vben/eslint-config": "workspace:*", "@vben/eslint-config": "workspace:*",
"@vben/prettier-config": "workspace:*", "@vben/prettier-config": "workspace:*",

View File

@ -35,7 +35,7 @@
}, },
"dependencies": { "dependencies": {
"@iconify/vue": "^4.1.2", "@iconify/vue": "^4.1.2",
"lucide-vue-next": "^0.426.0", "lucide-vue-next": "^0.427.0",
"vue": "^3.4.37" "vue": "^3.4.37"
} }
} }

View File

@ -9,4 +9,4 @@ export * from './tree';
export * from './unique'; export * from './unique';
export * from './update-css-variables'; export * from './update-css-variables';
export * from './window'; export * from './window';
export { default as cloneDepp } from 'lodash.clonedeep'; export { default as cloneDeep } from 'lodash.clonedeep';

View File

@ -48,7 +48,7 @@
"@vben-core/typings": "workspace:*", "@vben-core/typings": "workspace:*",
"@vueuse/core": "^10.11.1", "@vueuse/core": "^10.11.1",
"class-variance-authority": "^0.7.0", "class-variance-authority": "^0.7.0",
"lucide-vue-next": "^0.426.0", "lucide-vue-next": "^0.427.0",
"radix-vue": "^1.9.3", "radix-vue": "^1.9.3",
"vue": "^3.4.37" "vue": "^3.4.37"
} }

View File

@ -33,7 +33,8 @@ function handleClick(path?: string) {
<a href="javascript:void 0" @click.stop="handleClick(item.path)"> <a href="javascript:void 0" @click.stop="handleClick(item.path)">
<span class="flex-center z-10 h-full"> <span class="flex-center z-10 h-full">
<VbenIcon <VbenIcon
v-if="item.icon && showIcon" v-if="showIcon"
:fallback="showIcon"
:icon="item.icon" :icon="item.icon"
class="mr-1 size-4 flex-shrink-0" class="mr-1 size-4 flex-shrink-0"
/> />

View File

@ -51,7 +51,8 @@ function handleClick(path?: string) {
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger class="flex items-center gap-1"> <DropdownMenuTrigger class="flex items-center gap-1">
<VbenIcon <VbenIcon
v-if="item.icon && showIcon" v-if="showIcon"
:fallback="showIcon"
:icon="item.icon" :icon="item.icon"
class="size-5" class="size-5"
/> />
@ -77,8 +78,9 @@ function handleClick(path?: string) {
> >
<div class="flex-center"> <div class="flex-center">
<VbenIcon <VbenIcon
v-if="item.icon && showIcon" v-if="showIcon"
:class="{ 'size-5': item.isHome }" :class="{ 'size-5': item.isHome }"
:fallback="showIcon"
:icon="item.icon" :icon="item.icon"
class="mr-1 size-4" class="mr-1 size-4"
/> />
@ -88,8 +90,9 @@ function handleClick(path?: string) {
<BreadcrumbPage v-else> <BreadcrumbPage v-else>
<div class="flex-center"> <div class="flex-center">
<VbenIcon <VbenIcon
v-if="item.icon && showIcon" v-if="showIcon"
:class="{ 'size-5': item.isHome }" :class="{ 'size-5': item.isHome }"
:fallback="showIcon"
:icon="item.icon" :icon="item.icon"
class="mr-1 size-4" class="mr-1 size-4"
/> />

View File

@ -5,7 +5,7 @@ import type {
} from '@vben/types'; } from '@vben/types';
import { import {
cloneDepp, cloneDeep,
generateMenus, generateMenus,
generateRoutesByBackend, generateRoutesByBackend,
generateRoutesByFrontend, generateRoutesByFrontend,
@ -18,7 +18,7 @@ async function generateAccessible(
) { ) {
const { router } = options; const { router } = options;
options.routes = cloneDepp(options.routes); options.routes = cloneDeep(options.routes);
// 生成路由 // 生成路由
const accessibleRoutes = await generateRoutes(mode, options); const accessibleRoutes = await generateRoutes(mode, options);

View File

@ -56,7 +56,9 @@ export function useAntdDesignTokens() {
tokens.colorBgBase = getCssVariableValue('--background'); tokens.colorBgBase = getCssVariableValue('--background');
tokens.borderRadius = getCssVariableValue('--radius', false); const radius = Number.parseFloat(getCssVariableValue('--radius', false));
// 1rem = 16px
tokens.borderRadius = radius * 16;
tokens.colorBgLayout = getCssVariableValue('--background-deep'); tokens.colorBgLayout = getCssVariableValue('--background-deep');
tokens.colorBgMask = getCssVariableValue('--overlay'); tokens.colorBgMask = getCssVariableValue('--overlay');

View File

@ -1,9 +1,6 @@
import type { TabDefinition } from '@vben/types'; import type { TabDefinition } from '@vben/types';
import type { IContextMenuItem } from '@vben-core/tabs-ui'; import type { IContextMenuItem } from '@vben-core/tabs-ui';
import type { import type { RouteLocationNormalizedGeneric } from 'vue-router';
RouteLocationNormalized,
RouteLocationNormalizedGeneric,
} from 'vue-router';
import { computed, ref, watch } from 'vue'; import { computed, ref, watch } from 'vue';
import { useRoute, useRouter } from 'vue-router'; import { useRoute, useRouter } from 'vue-router';
@ -103,7 +100,14 @@ export function useTabbar() {
watch( watch(
() => route.path, () => route.path,
() => { () => {
tabbarStore.addTab(route as RouteLocationNormalized); // 这里不能用route用route时vue-router会自动将父级meta进行合并
const routes = router.getRoutes();
const currentRoute = routes.find((item) => item.path === route.path);
if (currentRoute) {
tabbarStore.addTab(
currentRoute as unknown as RouteLocationNormalizedGeneric,
);
}
}, },
{ immediate: true }, { immediate: true },
); );

File diff suppressed because it is too large Load Diff