提交 dbb8f203 作者: 方治民

fix: 使用 unplugin-vue-components 来修复 uni easycom 在 APP 下的导入问题

上级 e2bfcc8a
import type { Plugin } from 'vite' import type { Plugin } from 'vite'
import colors from 'picocolors' import colors from 'picocolors'
import { configUniPlugin } from './uni' import { configUniPlugin } from './uni'
import { configAutoImportPlugin } from './autoImport' import { configImportPlugin } from './unplugin'
import pkg from '../../package.json' import pkg from '../../package.json'
export function createVitePlugins(viteEnv: ViteEnv) { export function createVitePlugins(viteEnv: ViteEnv) {
...@@ -18,11 +18,12 @@ export function createVitePlugins(viteEnv: ViteEnv) { ...@@ -18,11 +18,12 @@ export function createVitePlugins(viteEnv: ViteEnv) {
// plugins // plugins
const vitePlugins: (Plugin | Plugin[])[] = [] const vitePlugins: (Plugin | Plugin[])[] = []
// unplugin-auto-import
// unplugin-vue-components
vitePlugins.push(configImportPlugin())
// uni-app // uni-app
vitePlugins.push(configUniPlugin()) vitePlugins.push(configUniPlugin())
// unplugin-auto-import
vitePlugins.push(configAutoImportPlugin())
return vitePlugins return vitePlugins
} }
...@@ -3,6 +3,8 @@ import path from 'path' ...@@ -3,6 +3,8 @@ import path from 'path'
// https://github.com/antfu/unplugin-auto-import // https://github.com/antfu/unplugin-auto-import
import AutoImport from 'unplugin-auto-import/vite' import AutoImport from 'unplugin-auto-import/vite'
// https://github.com/antfu/unplugin-vue-components
import Components from 'unplugin-vue-components/vite'
/** /**
* unplugin-auto-import * unplugin-auto-import
...@@ -22,9 +24,18 @@ export function configAutoImportPlugin(): Plugin { ...@@ -22,9 +24,18 @@ export function configAutoImportPlugin(): Plugin {
'@/common/message': ['Message'], '@/common/message': ['Message'],
}, },
], ],
})
}
/**
* unplugin-vue-components
* @returns Plugin
*/
export function configComponentsImportPlugin(): Plugin {
return Components({
resolvers: [ resolvers: [
(name) => { (name: string) => {
// FIX: 修复 easycom 在 APP 下不生效问题 // FIX: 修复 easycom 在 APP 下不生效问题(原因不明
if (name.startsWith('fui-')) { if (name.startsWith('fui-')) {
return path.resolve(__dirname, `src/components/firstui/${name}/${name}.vue`).replaceAll('\\', '/') return path.resolve(__dirname, `src/components/firstui/${name}/${name}.vue`).replaceAll('\\', '/')
} }
...@@ -32,3 +43,7 @@ export function configAutoImportPlugin(): Plugin { ...@@ -32,3 +43,7 @@ export function configAutoImportPlugin(): Plugin {
], ],
}) })
} }
export function configImportPlugin(): Plugin[] {
return [configAutoImportPlugin(), configComponentsImportPlugin()]
}
// generated by unplugin-vue-components
// We suggest you to commit this file into source control
// Read more: https://github.com/vuejs/core/pull/3399
import '@vue/runtime-core'
export {}
declare module '@vue/runtime-core' {
export interface GlobalComponents {
FDragItem: typeof import('./src/components/firstui/fui-drag/f-drag-item.vue')['default']
FIndexListItem: typeof import('./src/components/firstui/fui-index-list/f-index-list-item.vue')['default']
FuiActionsheet: typeof import('./src/components/firstui/fui-actionsheet/fui-actionsheet.vue')['default']
FuiAlert: typeof import('./src/components/firstui/fui-alert/fui-alert.vue')['default']
FuiAnimation: typeof import('./src/components/firstui/fui-animation/fui-animation.vue')['default']
FuiAutograph: typeof import('./src/components/firstui/fui-autograph/fui-autograph.vue')['default']
FuiAvatar: typeof import('./src/components/firstui/fui-avatar/fui-avatar.vue')['default']
FuiBackdrop: typeof import('./src/components/firstui/fui-backdrop/fui-backdrop.vue')['default']
FuiBacktop: typeof import('./src/components/firstui/fui-backtop/fui-backtop.vue')['default']
FuiBadge: typeof import('./src/components/firstui/fui-badge/fui-badge.vue')['default']
FuiBarcode: typeof import('./src/components/firstui/fui-barcode/fui-barcode.vue')['default']
FuiBottomNavbar: typeof import('./src/components/firstui/fui-bottom-navbar/fui-bottom-navbar.vue')['default']
FuiBottomPopup: typeof import('./src/components/firstui/fui-bottom-popup/fui-bottom-popup.vue')['default']
FuiBubbleBox: typeof import('./src/components/firstui/fui-bubble-box/fui-bubble-box.vue')['default']
FuiButton: typeof import('./src/components/firstui/fui-button/fui-button.vue')['default']
FuiCalendar: typeof import('./src/components/firstui/fui-calendar/fui-calendar.vue')['default']
FuiCard: typeof import('./src/components/firstui/fui-card/fui-card.vue')['default']
FuiCascader: typeof import('./src/components/firstui/fui-cascader/fui-cascader.vue')['default']
FuiCheckbox: typeof import('./src/components/firstui/fui-checkbox/fui-checkbox.vue')['default']
FuiCheckboxGroup: typeof import('./src/components/firstui/fui-checkbox-group/fui-checkbox-group.vue')['default']
FuiCircle: typeof import('./src/components/firstui/fui-circle/fui-circle.vue')['default']
FuiCol: typeof import('./src/components/firstui/fui-col/fui-col.vue')['default']
FuiCollapse: typeof import('./src/components/firstui/fui-collapse/fui-collapse.vue')['default']
FuiCollapseItem: typeof import('./src/components/firstui/fui-collapse-item/fui-collapse-item.vue')['default']
FuiCopyText: typeof import('./src/components/firstui/fui-copy-text/fui-copy-text.vue')['default']
FuiCountDown: typeof import('./src/components/firstui/fui-count-down/fui-count-down.vue')['default']
FuiCountdownVerify: typeof import('./src/components/firstui/fui-countdown-verify/fui-countdown-verify.vue')['default']
FuiCubicBezier: typeof import('./src/components/firstui/fui-cubic-bezier/fui-cubic-bezier.vue')['default']
FuiDataTag: typeof import('./src/components/firstui/fui-data-tag/fui-data-tag.vue')['default']
FuiDatePicker: typeof import('./src/components/firstui/fui-date-picker/fui-date-picker.vue')['default']
FuiDialog: typeof import('./src/components/firstui/fui-dialog/fui-dialog.vue')['default']
FuiDigitalKeyboard: typeof import('./src/components/firstui/fui-digital-keyboard/fui-digital-keyboard.vue')['default']
FuiDigitalRoller: typeof import('./src/components/firstui/fui-digital-roller/fui-digital-roller.vue')['default']
FuiDivider: typeof import('./src/components/firstui/fui-divider/fui-divider.vue')['default']
FuiDrag: typeof import('./src/components/firstui/fui-drag/fui-drag.vue')['default']
FuiDrawer: typeof import('./src/components/firstui/fui-drawer/fui-drawer.vue')['default']
FuiDropdownList: typeof import('./src/components/firstui/fui-dropdown-list/fui-dropdown-list.vue')['default']
FuiDropdownMenu: typeof import('./src/components/firstui/fui-dropdown-menu/fui-dropdown-menu.vue')['default']
FuiEmpty: typeof import('./src/components/firstui/fui-empty/fui-empty.vue')['default']
FuiFab: typeof import('./src/components/firstui/fui-fab/fui-fab.vue')['default']
FuiFilterBar: typeof import('./src/components/firstui/fui-filter-bar/fui-filter-bar.vue')['default']
FuiFooter: typeof import('./src/components/firstui/fui-footer/fui-footer.vue')['default']
FuiForm: typeof import('./src/components/firstui/fui-form/fui-form.vue')['default']
FuiFormField: typeof import('./src/components/firstui/fui-form-field/fui-form-field.vue')['default']
FuiGallery: typeof import('./src/components/firstui/fui-gallery/fui-gallery.vue')['default']
FuiGrid: typeof import('./src/components/firstui/fui-grid/fui-grid.vue')['default']
FuiGridItem: typeof import('./src/components/firstui/fui-grid-item/fui-grid-item.vue')['default']
FuiIcon: typeof import('./src/components/firstui/fui-icon/fui-icon.vue')['default']
FuiImageCropper: typeof import('./src/components/firstui/fui-image-cropper/fui-image-cropper.vue')['default']
FuiIndexList: typeof import('./src/components/firstui/fui-index-list/fui-index-list.vue')['default']
FuiInput: typeof import('./src/components/firstui/fui-input/fui-input.vue')['default']
FuiInputNumber: typeof import('./src/components/firstui/fui-input-number/fui-input-number.vue')['default']
FuiLabel: typeof import('./src/components/firstui/fui-label/fui-label.vue')['default']
FuiLandscape: typeof import('./src/components/firstui/fui-landscape/fui-landscape.vue')['default']
FuiLazyload: typeof import('./src/components/firstui/fui-lazyload/fui-lazyload.vue')['default']
FuiLicensePlate: typeof import('./src/components/firstui/fui-license-plate/fui-license-plate.vue')['default']
FuiList: typeof import('./src/components/firstui/fui-list/fui-list.vue')['default']
FuiListCell: typeof import('./src/components/firstui/fui-list-cell/fui-list-cell.vue')['default']
FuiLoadAni: typeof import('./src/components/firstui/fui-load-ani/fui-load-ani.vue')['default']
FuiLoading: typeof import('./src/components/firstui/fui-loading/fui-loading.vue')['default']
FuiLoadmore: typeof import('./src/components/firstui/fui-loadmore/fui-loadmore.vue')['default']
FuiMessage: typeof import('./src/components/firstui/fui-message/fui-message.vue')['default']
FuiModal: typeof import('./src/components/firstui/fui-modal/fui-modal.vue')['default']
FuiNavBar: typeof import('./src/components/firstui/fui-nav-bar/fui-nav-bar.vue')['default']
FuiNoticeBar: typeof import('./src/components/firstui/fui-notice-bar/fui-notice-bar.vue')['default']
FuiOverflowHidden: typeof import('./src/components/firstui/fui-overflow-hidden/fui-overflow-hidden.vue')['default']
FuiPagination: typeof import('./src/components/firstui/fui-pagination/fui-pagination.vue')['default']
FuiPanel: typeof import('./src/components/firstui/fui-panel/fui-panel.vue')['default']
FuiPicker: typeof import('./src/components/firstui/fui-picker/fui-picker.vue')['default']
FuiPoster: typeof import('./src/components/firstui/fui-poster/fui-poster.vue')['default']
FuiPosterWeex: typeof import('./src/components/firstui/fui-poster-weex/fui-poster-weex.vue')['default']
FuiPreview: typeof import('./src/components/firstui/fui-preview/fui-preview.vue')['default']
FuiProgress: typeof import('./src/components/firstui/fui-progress/fui-progress.vue')['default']
FuiPuzzleVerify: typeof import('./src/components/firstui/fui-puzzle-verify/fui-puzzle-verify.vue')['default']
FuiQrcode: typeof import('./src/components/firstui/fui-qrcode/fui-qrcode.vue')['default']
FuiRadio: typeof import('./src/components/firstui/fui-radio/fui-radio.vue')['default']
FuiRadioGroup: typeof import('./src/components/firstui/fui-radio-group/fui-radio-group.vue')['default']
FuiRate: typeof import('./src/components/firstui/fui-rate/fui-rate.vue')['default']
FuiResult: typeof import('./src/components/firstui/fui-result/fui-result.vue')['default']
FuiRotateVerify: typeof import('./src/components/firstui/fui-rotate-verify/fui-rotate-verify.vue')['default']
FuiRow: typeof import('./src/components/firstui/fui-row/fui-row.vue')['default']
FuiSafeArea: typeof import('./src/components/firstui/fui-safe-area/fui-safe-area.vue')['default']
FuiSearchBar: typeof import('./src/components/firstui/fui-search-bar/fui-search-bar.vue')['default']
FuiSegmentedControl: typeof import('./src/components/firstui/fui-segmented-control/fui-segmented-control.vue')['default']
FuiSelect: typeof import('./src/components/firstui/fui-select/fui-select.vue')['default']
FuiShareSheet: typeof import('./src/components/firstui/fui-share-sheet/fui-share-sheet.vue')['default']
FuiSingleInput: typeof import('./src/components/firstui/fui-single-input/fui-single-input.vue')['default']
FuiSkeleton: typeof import('./src/components/firstui/fui-skeleton/fui-skeleton.vue')['default']
FuiSlider: typeof import('./src/components/firstui/fui-slider/fui-slider.vue')['default']
FuiSliderCaptcha: typeof import('./src/components/firstui/fui-slider-captcha/fui-slider-captcha.vue')['default']
FuiSlideVerify: typeof import('./src/components/firstui/fui-slide-verify/fui-slide-verify.vue')['default']
FuiSpin: typeof import('./src/components/firstui/fui-spin/fui-spin.vue')['default']
FuiStatusBar: typeof import('./src/components/firstui/fui-status-bar/fui-status-bar.vue')['default']
FuiSteps: typeof import('./src/components/firstui/fui-steps/fui-steps.vue')['default']
FuiSticky: typeof import('./src/components/firstui/fui-sticky/fui-sticky.vue')['default']
FuiSwipeAction: typeof import('./src/components/firstui/fui-swipe-action/fui-swipe-action.vue')['default']
FuiSwipeactionGroup: typeof import('./src/components/firstui/fui-swipeaction-group/fui-swipeaction-group.vue')['default']
FuiSwiperDot: typeof import('./src/components/firstui/fui-swiper-dot/fui-swiper-dot.vue')['default']
FuiSwitch: typeof import('./src/components/firstui/fui-switch/fui-switch.vue')['default']
FuiTabbar: typeof import('./src/components/firstui/fui-tabbar/fui-tabbar.vue')['default']
FuiTable: typeof import('./src/components/firstui/fui-table/fui-table.vue')['default']
FuiTabs: typeof import('./src/components/firstui/fui-tabs/fui-tabs.vue')['default']
FuiTag: typeof import('./src/components/firstui/fui-tag/fui-tag.vue')['default']
FuiText: typeof import('./src/components/firstui/fui-text/fui-text.vue')['default']
FuiTextarea: typeof import('./src/components/firstui/fui-textarea/fui-textarea.vue')['default']
FuiTimeaxis: typeof import('./src/components/firstui/fui-timeaxis/fui-timeaxis.vue')['default']
FuiTimeaxisNode: typeof import('./src/components/firstui/fui-timeaxis-node/fui-timeaxis-node.vue')['default']
FuiTimer: typeof import('./src/components/firstui/fui-timer/fui-timer.vue')['default']
FuiToast: typeof import('./src/components/firstui/fui-toast/fui-toast.vue')['default']
FuiTopPopup: typeof import('./src/components/firstui/fui-top-popup/fui-top-popup.vue')['default']
FuiUpload: typeof import('./src/components/firstui/fui-upload/fui-upload.vue')['default']
FuiVtabs: typeof import('./src/components/firstui/fui-vtabs/fui-vtabs.vue')['default']
FuiVtabsContent: typeof import('./src/components/firstui/fui-vtabs-content/fui-vtabs-content.vue')['default']
FuiWaterfall: typeof import('./src/components/firstui/fui-waterfall/fui-waterfall.vue')['default']
FuiWaterfallItem: typeof import('./src/components/firstui/fui-waterfall-item/fui-waterfall-item.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
}
}
...@@ -131,6 +131,7 @@ ...@@ -131,6 +131,7 @@
"terser": "^5.15.1", "terser": "^5.15.1",
"typescript": "^4.8.4", "typescript": "^4.8.4",
"unplugin-auto-import": "^0.11.2", "unplugin-auto-import": "^0.11.2",
"unplugin-vue-components": "^0.22.8",
"vite": "^3.1.6", "vite": "^3.1.6",
"vue-eslint-parser": "^9.1.0" "vue-eslint-parser": "^9.1.0"
}, },
......
...@@ -64,6 +64,7 @@ specifiers: ...@@ -64,6 +64,7 @@ specifiers:
terser: ^5.15.1 terser: ^5.15.1
typescript: ^4.8.4 typescript: ^4.8.4
unplugin-auto-import: ^0.11.2 unplugin-auto-import: ^0.11.2
unplugin-vue-components: ^0.22.8
vite: ^3.1.6 vite: ^3.1.6
vue: ^3.2.40 vue: ^3.2.40
vue-eslint-parser: ^9.1.0 vue-eslint-parser: ^9.1.0
...@@ -139,6 +140,7 @@ devDependencies: ...@@ -139,6 +140,7 @@ devDependencies:
terser: 5.15.1 terser: 5.15.1
typescript: 4.8.4 typescript: 4.8.4
unplugin-auto-import: 0.11.2_@vueuse+core@8.9.4 unplugin-auto-import: 0.11.2_@vueuse+core@8.9.4
unplugin-vue-components: 0.22.8_vue@3.2.40
vite: 3.1.6_ui7xi2lj2d7s7nt3l5kbarm4ea vite: 3.1.6_ui7xi2lj2d7s7nt3l5kbarm4ea
vue-eslint-parser: 9.1.0_eslint@8.25.0 vue-eslint-parser: 9.1.0_eslint@8.25.0
...@@ -1984,6 +1986,12 @@ packages: ...@@ -1984,6 +1986,12 @@ packages:
balanced-match: 1.0.2 balanced-match: 1.0.2
concat-map: 0.0.1 concat-map: 0.0.1
/brace-expansion/2.0.1:
resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
dependencies:
balanced-match: 1.0.2
dev: true
/braces/3.0.2: /braces/3.0.2:
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
engines: {node: '>=8'} engines: {node: '>=8'}
...@@ -4525,6 +4533,13 @@ packages: ...@@ -4525,6 +4533,13 @@ packages:
dependencies: dependencies:
brace-expansion: 1.1.11 brace-expansion: 1.1.11
/minimatch/5.1.0:
resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==}
engines: {node: '>=10'}
dependencies:
brace-expansion: 2.0.1
dev: true
/minimist-options/4.1.0: /minimist-options/4.1.0:
resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
engines: {node: '>= 6'} engines: {node: '>= 6'}
...@@ -6197,6 +6212,31 @@ packages: ...@@ -6197,6 +6212,31 @@ packages:
unplugin: 0.9.6 unplugin: 0.9.6
dev: true dev: true
/unplugin-vue-components/0.22.8_vue@3.2.40:
resolution: {integrity: sha512-Musnwdtr6uj9Zopo4oeh4lp9+fJ2ArXVDzSiZxF4YC9v+pLnasKVKEEAjdXuQQ3u3KtntVw6PCscyAt52eS75g==}
engines: {node: '>=14'}
peerDependencies:
'@babel/parser': ^7.15.8
vue: 2 || 3
peerDependenciesMeta:
'@babel/parser':
optional: true
dependencies:
'@antfu/utils': 0.5.2
'@rollup/pluginutils': 4.2.1
chokidar: 3.5.3
debug: 4.3.4
fast-glob: 3.2.12
local-pkg: 0.4.2
magic-string: 0.26.7
minimatch: 5.1.0
resolve: 1.22.1
unplugin: 0.9.6
vue: 3.2.40
transitivePeerDependencies:
- supports-color
dev: true
/unplugin/0.9.6: /unplugin/0.9.6:
resolution: {integrity: sha512-YYLtfoNiie/lxswy1GOsKXgnLJTE27la/PeCGznSItk+8METYZErO+zzV9KQ/hXhPwzIJsfJ4s0m1Rl7ZCWZ4Q==} resolution: {integrity: sha512-YYLtfoNiie/lxswy1GOsKXgnLJTE27la/PeCGznSItk+8METYZErO+zzV9KQ/hXhPwzIJsfJ4s0m1Rl7ZCWZ4Q==}
dependencies: dependencies:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论