diff --git a/package.json b/package.json index 9a897c7..5e92787 100644 --- a/package.json +++ b/package.json @@ -9,17 +9,19 @@ "preview": "vite preview" }, "dependencies": { - "tailwindcss": "^4.1.4", - "vue": "^3.5.13", "@ant-design-vue/pro-layout": "^3.2.5", "@ant-design/icons-vue": "^7.0.1", + "@fortawesome/fontawesome-free": "^6.7.2", "@tailwindcss/vite": "^4.1.4", "@vueuse/head": "^2.0.0", "ant-design-vue": "^4.1.1", + "aos": "^2.3.4", "axios": "^1.6.2", "lucide-vue-next": "^0.507.0", "pinia": "^2.1.7", - "swiper": "^11.0.5", + "swiper": "^11.2.6", + "tailwindcss": "^4.1.4", + "vue": "^3.5.13", "vue-router": "^4.2.5" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 061cee9..c25cae3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: '@ant-design/icons-vue': specifier: ^7.0.1 version: 7.0.1(vue@3.5.13) + '@fortawesome/fontawesome-free': + specifier: ^6.7.2 + version: 6.7.2 '@tailwindcss/vite': specifier: ^4.1.4 version: 4.1.4(vite@6.3.3(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.88.0)) @@ -36,7 +39,7 @@ importers: specifier: ^2.1.7 version: 2.3.1(vue@3.5.13) swiper: - specifier: ^11.0.5 + specifier: ^11.2.6 version: 11.2.6 tailwindcss: specifier: ^4.1.4 @@ -263,6 +266,10 @@ packages: cpu: [x64] os: [win32] + '@fortawesome/fontawesome-free@6.7.2': + resolution: {integrity: sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==} + engines: {node: '>=6'} + '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} @@ -295,42 +302,36 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.1': resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.1': resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.1': resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.1': resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.1': resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [musl] '@parcel/watcher-win32-arm64@2.5.1': resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} @@ -388,67 +389,56 @@ packages: resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==} cpu: [arm] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.40.0': resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==} cpu: [arm] os: [linux] - libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.40.0': resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==} cpu: [arm64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.40.0': resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==} cpu: [arm64] os: [linux] - libc: [musl] '@rollup/rollup-linux-loongarch64-gnu@4.40.0': resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==} cpu: [loong64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==} cpu: [ppc64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.40.0': resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==} cpu: [riscv64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.40.0': resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==} cpu: [riscv64] os: [linux] - libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.40.0': resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==} cpu: [s390x] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.40.0': resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==} cpu: [x64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-musl@4.40.0': resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==} cpu: [x64] os: [linux] - libc: [musl] '@rollup/rollup-win32-arm64-msvc@4.40.0': resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==} @@ -506,28 +496,24 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] '@tailwindcss/oxide-linux-arm64-musl@4.1.4': resolution: {integrity: sha512-X3As2xhtgPTY/m5edUtddmZ8rCruvBvtxYLMw9OsZdH01L2gS2icsHRwxdU0dMItNfVmrBezueXZCHxVeeb7Aw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] '@tailwindcss/oxide-linux-x64-gnu@4.1.4': resolution: {integrity: sha512-2VG4DqhGaDSmYIu6C4ua2vSLXnJsb/C9liej7TuSO04NK+JJJgJucDUgmX6sn7Gw3Cs5ZJ9ZLrnI0QRDOjLfNQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] '@tailwindcss/oxide-linux-x64-musl@4.1.4': resolution: {integrity: sha512-v+mxVgH2kmur/X5Mdrz9m7TsoVjbdYQT0b4Z+dr+I4RvreCNXyCFELZL/DO0M1RsidZTrm6O1eMnV6zlgEzTMQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] '@tailwindcss/oxide-wasm32-wasi@4.1.4': resolution: {integrity: sha512-2TLe9ir+9esCf6Wm+lLWTMbgklIjiF0pbmDnwmhR9MksVOq+e8aP3TSsXySnBDDvTTVd/vKu1aNttEGj3P6l8Q==} @@ -851,28 +837,24 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] lightningcss-linux-arm64-musl@1.29.2: resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [musl] lightningcss-linux-x64-gnu@1.29.2: resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [glibc] lightningcss-linux-x64-musl@1.29.2: resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [musl] lightningcss-win32-arm64-msvc@1.29.2: resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} @@ -1229,6 +1211,8 @@ snapshots: '@esbuild/win32-x64@0.25.3': optional: true + '@fortawesome/fontawesome-free@6.7.2': {} + '@jridgewell/sourcemap-codec@1.5.0': {} '@parcel/watcher-android-arm64@2.5.1': diff --git a/src/App.vue b/src/App.vue index 3602e60..ebf29fa 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,10 +1,23 @@ diff --git a/src/assets/images/company0002.jpeg b/src/assets/images/company0002.jpeg new file mode 100644 index 0000000..1f29734 Binary files /dev/null and b/src/assets/images/company0002.jpeg differ diff --git a/src/assets/images/company0003.jpeg b/src/assets/images/company0003.jpeg new file mode 100644 index 0000000..31083ca Binary files /dev/null and b/src/assets/images/company0003.jpeg differ diff --git a/src/assets/images/company0004.jpeg b/src/assets/images/company0004.jpeg new file mode 100644 index 0000000..8f57a4f Binary files /dev/null and b/src/assets/images/company0004.jpeg differ diff --git a/src/assets/images/company0005.jpeg b/src/assets/images/company0005.jpeg new file mode 100644 index 0000000..4a7d055 Binary files /dev/null and b/src/assets/images/company0005.jpeg differ diff --git a/src/assets/images/company0006.png b/src/assets/images/company0006.png new file mode 100644 index 0000000..9c2b6a0 Binary files /dev/null and b/src/assets/images/company0006.png differ diff --git a/src/assets/images/features-home.png b/src/assets/images/features-home.png new file mode 100644 index 0000000..8a48ba9 Binary files /dev/null and b/src/assets/images/features-home.png differ diff --git a/src/assets/images/features0001.jpeg b/src/assets/images/features0001.jpeg new file mode 100644 index 0000000..f9d88c6 Binary files /dev/null and b/src/assets/images/features0001.jpeg differ diff --git a/src/assets/images/features0002.jpeg b/src/assets/images/features0002.jpeg new file mode 100644 index 0000000..74b28fd Binary files /dev/null and b/src/assets/images/features0002.jpeg differ diff --git a/src/assets/images/gongan.png b/src/assets/images/gongan.png new file mode 100644 index 0000000..a341341 Binary files /dev/null and b/src/assets/images/gongan.png differ diff --git a/src/assets/images/home0001.jpeg b/src/assets/images/home0001.jpeg new file mode 100644 index 0000000..9c33bbf Binary files /dev/null and b/src/assets/images/home0001.jpeg differ diff --git a/src/assets/images/join0001.jpeg b/src/assets/images/join0001.jpeg new file mode 100644 index 0000000..09e5d21 Binary files /dev/null and b/src/assets/images/join0001.jpeg differ diff --git a/src/assets/images/join0002.jpeg b/src/assets/images/join0002.jpeg new file mode 100644 index 0000000..6984d76 Binary files /dev/null and b/src/assets/images/join0002.jpeg differ diff --git a/src/assets/images/logo-white.png b/src/assets/images/logo-white.png new file mode 100644 index 0000000..8be26cc Binary files /dev/null and b/src/assets/images/logo-white.png differ diff --git a/src/assets/images/logo.png b/src/assets/images/logo.png new file mode 100644 index 0000000..3379f6c Binary files /dev/null and b/src/assets/images/logo.png differ diff --git a/src/assets/images/logo@1x.png b/src/assets/images/logo@1x.png new file mode 100644 index 0000000..e1a7e6e Binary files /dev/null and b/src/assets/images/logo@1x.png differ diff --git a/src/assets/images/mark_bs.png b/src/assets/images/mark_bs.png new file mode 100644 index 0000000..6e4e9b6 Binary files /dev/null and b/src/assets/images/mark_bs.png differ diff --git a/src/assets/images/team0001.jpeg b/src/assets/images/team0001.jpeg new file mode 100644 index 0000000..9d22c0d Binary files /dev/null and b/src/assets/images/team0001.jpeg differ diff --git a/src/assets/images/team0003.jpeg b/src/assets/images/team0003.jpeg new file mode 100644 index 0000000..f650ea2 Binary files /dev/null and b/src/assets/images/team0003.jpeg differ diff --git a/src/assets/images/zq0001.png b/src/assets/images/zq0001.png new file mode 100644 index 0000000..9624500 Binary files /dev/null and b/src/assets/images/zq0001.png differ diff --git a/src/assets/styles/global.scss b/src/assets/styles/global.scss new file mode 100644 index 0000000..95f0ef8 --- /dev/null +++ b/src/assets/styles/global.scss @@ -0,0 +1,29 @@ +body { + font-family: 'Inter', 'Helvetica Neue', 'PingFang SC', sans-serif; + color: #1a202c; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.container { + @apply mx-auto px-4; +} + +.section { + @apply py-16 md:py-24; +} + +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.3s ease; +} + +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} + +p { + // 首行缩进两个字符 + text-indent: 2em; +} \ No newline at end of file diff --git a/src/components/layout/Footer.vue b/src/components/layout/Footer.vue new file mode 100644 index 0000000..1aa061f --- /dev/null +++ b/src/components/layout/Footer.vue @@ -0,0 +1,142 @@ + + + \ No newline at end of file diff --git a/src/components/layout/Header.vue b/src/components/layout/Header.vue new file mode 100644 index 0000000..90ab647 --- /dev/null +++ b/src/components/layout/Header.vue @@ -0,0 +1,192 @@ + + + + + \ No newline at end of file diff --git a/src/components/ui/Card.vue b/src/components/ui/Card.vue new file mode 100644 index 0000000..284e89d --- /dev/null +++ b/src/components/ui/Card.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/src/components/ui/Company.vue b/src/components/ui/Company.vue new file mode 100644 index 0000000..ea7b8db --- /dev/null +++ b/src/components/ui/Company.vue @@ -0,0 +1,269 @@ + + + + + \ No newline at end of file diff --git a/src/components/ui/FeatureCard.vue b/src/components/ui/FeatureCard.vue new file mode 100644 index 0000000..a439814 --- /dev/null +++ b/src/components/ui/FeatureCard.vue @@ -0,0 +1,39 @@ + + + \ No newline at end of file diff --git a/src/components/ui/SectionTitle.vue b/src/components/ui/SectionTitle.vue new file mode 100644 index 0000000..ecb728f --- /dev/null +++ b/src/components/ui/SectionTitle.vue @@ -0,0 +1,85 @@ + + + \ No newline at end of file diff --git a/src/components/ui/TeamMember.vue b/src/components/ui/TeamMember.vue new file mode 100644 index 0000000..9f2f596 --- /dev/null +++ b/src/components/ui/TeamMember.vue @@ -0,0 +1,48 @@ + + + \ No newline at end of file diff --git a/src/main.js b/src/main.js index efadd61..6f87b48 100644 --- a/src/main.js +++ b/src/main.js @@ -2,9 +2,13 @@ import { createApp } from 'vue' import { createPinia } from 'pinia' import Antd from 'ant-design-vue' import './style.css' +import '@/assets/styles/global.scss' import App from './App.vue' // 注册路由 import router from './router' +import AOS from 'aos' +import 'aos/dist/aos.css' +import '@fortawesome/fontawesome-free/css/all.min.css'; const app = createApp(App) @@ -13,4 +17,10 @@ const app = createApp(App) app.use(createPinia()) app.use(router) app.use(Antd) +app.use(AOS.init({ + duration: 800, + offset: 100, + easing: 'ease-in-out', + once: true +})) app.mount('#app') diff --git a/src/router/index.js b/src/router/index.js index 796771d..4fae600 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -4,13 +4,11 @@ import MainLayout from '@/layouts/Header.vue' // 在路由配置中添加个人中心路由 const routes = [ - { - path: '/', - component: MainLayout, - children: [ - { path: '', name: 'Home', component: () => import('@/views/index/index.vue') }, - ] - }, + { path: '/', meta: { title: '首页' }, name: 'Home', component: () => import('@/views/Home.vue') }, + { path: '/about', meta: { title: '公司介绍' }, name: 'About', component: () => import('@/views/About.vue') }, + { path: '/team', meta: { title: '团队介绍' }, name: 'Team', component: () => import('@/views/Team.vue') }, + { path: '/features', meta: { title: '公司特色' }, name: 'Features', component: () => import('@/views/Features.vue') }, + { path: '/careers', meta: { title: '加入我们' }, name: 'Careers', component: () => import('@/views/Careers.vue') }, ] const router = createRouter({ @@ -21,18 +19,19 @@ const router = createRouter({ } }) -router.beforeEach((to, from) => { - const userStore = useUserStore() - if (to.meta.requiresAuth && !userStore.user) { - return { name: 'Login', query: { redirect: to.fullPath } } - } -}) export default router router.beforeEach((to, from) => { - const userStore = useUserStore() - if (to.meta.requiresAuth && !userStore.user) { - return { name: 'Login', query: { redirect: to.fullPath } } + // const userStore = useUserStore() + // if (to.meta.requiresAuth && !userStore.user) { + // return { name: 'Login', query: { redirect: to.fullPath } } + // } + + if (to.meta.title) { + console.log('to.meta.title', to.meta) + document.title = `${to.meta.title} | 上海酉佰` + } else { + document.title = `上海酉佰` } }) diff --git a/src/style.css b/src/style.css index a461c50..213239d 100644 --- a/src/style.css +++ b/src/style.css @@ -1 +1,28 @@ -@import "tailwindcss"; \ No newline at end of file +@import "tailwindcss"; + +/*@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');*/ + +/*body {*/ +/* font-family: 'Inter', 'Helvetica Neue', 'PingFang SC', sans-serif;*/ +/* color: #1a202c;*/ +/* -webkit-font-smoothing: antialiased;*/ +/* -moz-osx-font-smoothing: grayscale;*/ +/*}*/ + +/*.container {*/ +/* @apply mx-auto px-4;*/ +/*}*/ + +/*.section {*/ +/* @apply py-16 md:py-24;*/ +/*}*/ + +/*.fade-enter-active,*/ +/*.fade-leave-active {*/ +/* transition: opacity 0.3s ease;*/ +/*}*/ + +/*.fade-enter-from,*/ +/*.fade-leave-to {*/ +/* opacity: 0;*/ +/*}*/ \ No newline at end of file diff --git a/src/views/About.vue b/src/views/About.vue new file mode 100644 index 0000000..a31363a --- /dev/null +++ b/src/views/About.vue @@ -0,0 +1,619 @@ + + + + + \ No newline at end of file diff --git a/src/views/Careers.vue b/src/views/Careers.vue new file mode 100644 index 0000000..c603469 --- /dev/null +++ b/src/views/Careers.vue @@ -0,0 +1,402 @@ + + + + + \ No newline at end of file diff --git a/src/views/Features.vue b/src/views/Features.vue new file mode 100644 index 0000000..6301c64 --- /dev/null +++ b/src/views/Features.vue @@ -0,0 +1,542 @@ + + + + + \ No newline at end of file diff --git a/src/views/Home.vue b/src/views/Home.vue new file mode 100644 index 0000000..fdf934e --- /dev/null +++ b/src/views/Home.vue @@ -0,0 +1,282 @@ + + + \ No newline at end of file diff --git a/src/views/Team.vue b/src/views/Team.vue new file mode 100644 index 0000000..4aaa828 --- /dev/null +++ b/src/views/Team.vue @@ -0,0 +1,231 @@ + + + \ No newline at end of file diff --git a/vite.config.js b/vite.config.js index df31b24..d1ff2ff 100644 --- a/vite.config.js +++ b/vite.config.js @@ -15,7 +15,7 @@ export default defineConfig({ } }, server: { - port: 8888, + port: 10186, proxy: { '/api': { // target: 'http://127.0.0.1:18007/api/', @@ -24,5 +24,19 @@ export default defineConfig({ rewrite: (path) => path.replace(/^\/api/, '') } } + }, + build: { + assetsDir: 'assets/images', + rollupOptions: { + output: { + assetFileNames: (assetInfo) => { + let extType = assetInfo.name.split('.').at(1); + if (/png|jpe?g|svg|gif|tiff|bmp|ico/i.test(extType)) { + return `assets/images/[name]-[hash][extname]`; + } + return `assets/[name]-[hash][extname]`; + } + } + } } })