diff --git a/package.json b/package.json index cc665cc..e4cfa09 100644 --- a/package.json +++ b/package.json @@ -8,13 +8,12 @@ "sideEffects": false, "exports": { ".": { - "import": "./dist/unuse-ui.js", - "require": "./dist/unuse-ui.umd.cjs" + "import": "./dist/index.js" }, - "./dist/style.css": "./dist/style.css" + "./dist/style.css": "./dist/assets/style.css" }, - "main": "./dist/unuse-ui.umd.cjs", - "module": "./dist/unuse-ui.js", + "main": "./dist/index.js", + "module": "./dist/index.js", "types": "./dist/unuse-ui.d.ts", "files": [ "dist" diff --git a/playground/src/components.d.ts b/playground/src/components.d.ts index 0816200..88ff333 100644 --- a/playground/src/components.d.ts +++ b/playground/src/components.d.ts @@ -9,7 +9,6 @@ declare module 'vue' { export interface GlobalComponents { RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] - UAvatar: typeof import('unuse-ui')['UAvatar'] UBreadcrumb: typeof import('unuse-ui')['UBreadcrumb'] UButton: typeof import('unuse-ui')['UButton'] UCard: typeof import('unuse-ui')['UCard'] diff --git a/playground/uno.config.ts b/playground/uno.config.ts index 1710e9f..a6f562a 100644 --- a/playground/uno.config.ts +++ b/playground/uno.config.ts @@ -24,7 +24,7 @@ export default defineConfig({ ], content: { pipeline: { - include: [/.*\/unuse-ui\.js(.*)?$/, './**/*.vue'], + include: [/.*\/unuse-ui\/.*[^/]+\.js$/, './**/*.vue'], }, }, }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 361a4d3..b8784c8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -81,7 +81,7 @@ devDependencies: version: 5.3.3 unocss: specifier: ^0.58.5 - version: 0.58.5(postcss@8.4.32)(vite@5.0.12) + version: 0.58.5(postcss@8.4.35)(vite@5.0.12) unplugin-auto-import: specifier: ^0.17.5 version: 0.17.5(@vueuse/core@10.7.2) @@ -96,7 +96,7 @@ devDependencies: version: 3.7.2(@types/node@20.11.16)(typescript@5.3.3)(vite@5.0.12) vitepress: specifier: 1.0.0-rc.32 - version: 1.0.0-rc.32(@algolia/client-search@4.22.0)(@types/node@20.11.16)(postcss@8.4.32)(search-insights@2.13.0)(typescript@5.3.3) + version: 1.0.0-rc.32(@algolia/client-search@4.22.0)(@types/node@20.11.16)(postcss@8.4.35)(search-insights@2.13.0)(typescript@5.3.3) vue-router: specifier: ^4.2.5 version: 4.2.5(vue@3.4.16) @@ -1262,7 +1262,7 @@ packages: peerDependencies: unocss: '>= 0.31.13 < 1' dependencies: - unocss: 0.58.5(postcss@8.4.32)(vite@5.0.12) + unocss: 0.58.5(postcss@8.4.35)(vite@5.0.12) dev: true /@microsoft/api-extractor-model@7.28.3(@types/node@20.11.16): @@ -2147,7 +2147,7 @@ packages: sirv: 2.0.4 dev: true - /@unocss/postcss@0.58.5(postcss@8.4.32): + /@unocss/postcss@0.58.5(postcss@8.4.35): resolution: {integrity: sha512-m4L2YRdYfT6CV306Kl2VwEwbqa/92EpW4GE2Kqak1RuJyFJXBnWEEMJV4Uy6B1jWKLlCEWkuVUW33JUg7X6BxQ==} engines: {node: '>=14'} peerDependencies: @@ -2159,7 +2159,7 @@ packages: css-tree: 2.3.1 fast-glob: 3.3.2 magic-string: 0.30.7 - postcss: 8.4.32 + postcss: 8.4.35 dev: true /@unocss/preset-attributify@0.58.5: @@ -3614,7 +3614,7 @@ packages: is-glob: 4.0.3 minimatch: 3.1.2 resolve: 1.22.8 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-typescript @@ -6790,7 +6790,7 @@ packages: engines: {node: '>= 4.0.0'} dev: true - /unocss@0.58.5(postcss@8.4.32)(vite@5.0.12): + /unocss@0.58.5(postcss@8.4.35)(vite@5.0.12): resolution: {integrity: sha512-0g4P6jLgRRNnhscxw7nQ9RHGrKJ1UPPiHPet+YT3TXUcmy4mTiYgo9+kGQf5bjyrzsELJ10cT6Qz2y6g9Tls4g==} engines: {node: '>=14'} peerDependencies: @@ -6806,7 +6806,7 @@ packages: '@unocss/cli': 0.58.5 '@unocss/core': 0.58.5 '@unocss/extractor-arbitrary-variants': 0.58.5 - '@unocss/postcss': 0.58.5(postcss@8.4.32) + '@unocss/postcss': 0.58.5(postcss@8.4.35) '@unocss/preset-attributify': 0.58.5 '@unocss/preset-icons': 0.58.5 '@unocss/preset-mini': 0.58.5 @@ -7023,7 +7023,7 @@ packages: fsevents: 2.3.3 dev: true - /vitepress@1.0.0-rc.32(@algolia/client-search@4.22.0)(@types/node@20.11.16)(postcss@8.4.32)(search-insights@2.13.0)(typescript@5.3.3): + /vitepress@1.0.0-rc.32(@algolia/client-search@4.22.0)(@types/node@20.11.16)(postcss@8.4.35)(search-insights@2.13.0)(typescript@5.3.3): resolution: {integrity: sha512-yf00Skn5BGP+YOQvTbSrB5s9qEb/cV+i+wM5rw+mlaxcIYtK+ORvyBEYZLvKogs7OO70TppJtixb4ofeo5K7HA==} hasBin: true peerDependencies: @@ -7046,7 +7046,7 @@ packages: mark.js: 8.11.1 minisearch: 6.3.0 mrmime: 1.0.1 - postcss: 8.4.32 + postcss: 8.4.35 shikiji: 0.9.2 shikiji-transformers: 0.9.2 vite: 5.0.12(@types/node@20.11.16) diff --git a/src/components/avatar/index.ts b/src/components/avatar/index.ts new file mode 100644 index 0000000..5a61d80 --- /dev/null +++ b/src/components/avatar/index.ts @@ -0,0 +1,2 @@ +export { default as UAvatar } from './UAvatar.vue' +export type { Avatar } from './avatar' diff --git a/src/components/breadcrumb/index.ts b/src/components/breadcrumb/index.ts new file mode 100644 index 0000000..0aa5ff1 --- /dev/null +++ b/src/components/breadcrumb/index.ts @@ -0,0 +1 @@ +export { default as UBreadcrumb } from './UBreadcrumb.vue' diff --git a/src/components/button/index.ts b/src/components/button/index.ts new file mode 100644 index 0000000..cbbdd5b --- /dev/null +++ b/src/components/button/index.ts @@ -0,0 +1,2 @@ +export { default as UButton } from './UButton.vue' +export type { Button, ButtonColor, ButtonVariant } from './button' diff --git a/src/components/card/index.ts b/src/components/card/index.ts new file mode 100644 index 0000000..15346ee --- /dev/null +++ b/src/components/card/index.ts @@ -0,0 +1 @@ +export { default as UCard } from './UCard.vue' diff --git a/src/components/checkbox/index.ts b/src/components/checkbox/index.ts new file mode 100644 index 0000000..f07328f --- /dev/null +++ b/src/components/checkbox/index.ts @@ -0,0 +1 @@ +export { default as UCheckbox } from './UCheckbox.vue' diff --git a/src/components/collapse/index.ts b/src/components/collapse/index.ts new file mode 100644 index 0000000..60267ef --- /dev/null +++ b/src/components/collapse/index.ts @@ -0,0 +1 @@ +export { default as UCollapse } from './UCollapse.vue' diff --git a/src/components/container/index.ts b/src/components/container/index.ts new file mode 100644 index 0000000..20d0e98 --- /dev/null +++ b/src/components/container/index.ts @@ -0,0 +1 @@ +export { default as UContainer } from './UContainer.vue' diff --git a/src/components/datepicker/index.ts b/src/components/datepicker/index.ts new file mode 100644 index 0000000..d57aa22 --- /dev/null +++ b/src/components/datepicker/index.ts @@ -0,0 +1,2 @@ +export { default as UDatepicker } from './UDatepicker.vue' +export type { DateType } from './datepicker' diff --git a/src/components/dialog/index.ts b/src/components/dialog/index.ts new file mode 100644 index 0000000..11567ad --- /dev/null +++ b/src/components/dialog/index.ts @@ -0,0 +1 @@ +export { default as UDialog } from './UDialog.vue' diff --git a/src/components/dropdown/index.ts b/src/components/dropdown/index.ts new file mode 100644 index 0000000..cc37fb8 --- /dev/null +++ b/src/components/dropdown/index.ts @@ -0,0 +1,2 @@ +export { default as UDropdown } from './UDropdown.vue' +export type { DropdownItem } from './dropdown' diff --git a/src/components/file-upload/index.ts b/src/components/file-upload/index.ts new file mode 100644 index 0000000..7e98b97 --- /dev/null +++ b/src/components/file-upload/index.ts @@ -0,0 +1 @@ +export { default as UFileUpload } from './UFileUpload.vue' diff --git a/src/components/form-group/index.ts b/src/components/form-group/index.ts new file mode 100644 index 0000000..c3c82d6 --- /dev/null +++ b/src/components/form-group/index.ts @@ -0,0 +1 @@ +export { default as UFormGroup } from './UFormGroup.vue' diff --git a/src/components/icon/index.ts b/src/components/icon/index.ts new file mode 100644 index 0000000..b9b886c --- /dev/null +++ b/src/components/icon/index.ts @@ -0,0 +1 @@ +export { default as UIcon } from './UIcon.vue' diff --git a/src/components/input/index.ts b/src/components/input/index.ts new file mode 100644 index 0000000..5bfb248 --- /dev/null +++ b/src/components/input/index.ts @@ -0,0 +1,2 @@ +export { default as UInput } from './UInput.vue' +export type { Input, InputColor, InputVariant } from './input' diff --git a/src/components/link/index.ts b/src/components/link/index.ts new file mode 100644 index 0000000..aa958af --- /dev/null +++ b/src/components/link/index.ts @@ -0,0 +1 @@ +export { default as ULinkCustom } from './ULinkCustom.vue' diff --git a/src/components/nav/index.ts b/src/components/nav/index.ts new file mode 100644 index 0000000..3cf57a6 --- /dev/null +++ b/src/components/nav/index.ts @@ -0,0 +1 @@ +export { default as UNav } from './UNav.vue' diff --git a/src/components/notification/index.ts b/src/components/notification/index.ts new file mode 100644 index 0000000..373b745 --- /dev/null +++ b/src/components/notification/index.ts @@ -0,0 +1,2 @@ +export { default as UNotifications } from './UNotifications.vue' +export type { Notification, NotificationAction } from './notification' diff --git a/src/components/pagination/index.ts b/src/components/pagination/index.ts new file mode 100644 index 0000000..5266f92 --- /dev/null +++ b/src/components/pagination/index.ts @@ -0,0 +1 @@ +export { default as UPagination } from './UPagination.vue' diff --git a/src/components/popover/index.ts b/src/components/popover/index.ts new file mode 100644 index 0000000..c89fe2e --- /dev/null +++ b/src/components/popover/index.ts @@ -0,0 +1 @@ +export { default as UPopover } from './UPopover.vue' diff --git a/src/components/radio/index.ts b/src/components/radio/index.ts new file mode 100644 index 0000000..d1f2293 --- /dev/null +++ b/src/components/radio/index.ts @@ -0,0 +1,2 @@ +export { default as URadio } from './URadio.vue' +export { default as URadioGroup } from './URadioGroup.vue' diff --git a/src/components/select/index.ts b/src/components/select/index.ts new file mode 100644 index 0000000..5c5105a --- /dev/null +++ b/src/components/select/index.ts @@ -0,0 +1,2 @@ +export { default as USelect } from './USelect.vue' +export { default as USelectMenu } from './USelectMenu.vue' diff --git a/src/components/skeleton/index.ts b/src/components/skeleton/index.ts new file mode 100644 index 0000000..99006a4 --- /dev/null +++ b/src/components/skeleton/index.ts @@ -0,0 +1 @@ +export { default as USkeleton } from './USkeleton.vue' diff --git a/src/components/slider/index.ts b/src/components/slider/index.ts new file mode 100644 index 0000000..a2e99bc --- /dev/null +++ b/src/components/slider/index.ts @@ -0,0 +1 @@ +export { default as USlider } from './USlider.vue' diff --git a/src/components/table/index.ts b/src/components/table/index.ts new file mode 100644 index 0000000..300f806 --- /dev/null +++ b/src/components/table/index.ts @@ -0,0 +1 @@ +export { default as UTable } from './UTable.vue' diff --git a/src/components/tag/index.ts b/src/components/tag/index.ts new file mode 100644 index 0000000..0753cf7 --- /dev/null +++ b/src/components/tag/index.ts @@ -0,0 +1,2 @@ +export { default as UTag } from './UTag.vue' +export type { TagVariant } from './tag' diff --git a/src/components/text/index.ts b/src/components/text/index.ts new file mode 100644 index 0000000..13ca33e --- /dev/null +++ b/src/components/text/index.ts @@ -0,0 +1 @@ +export { default as UText } from './UText.vue' diff --git a/src/components/textarea/index.ts b/src/components/textarea/index.ts new file mode 100644 index 0000000..1011f19 --- /dev/null +++ b/src/components/textarea/index.ts @@ -0,0 +1 @@ +export { default as UTextarea } from './UTextarea.vue' diff --git a/src/components/toggle/index.ts b/src/components/toggle/index.ts new file mode 100644 index 0000000..1f119ae --- /dev/null +++ b/src/components/toggle/index.ts @@ -0,0 +1 @@ +export { default as UToggle } from './UToggle.vue' diff --git a/src/components/tooltip/index.ts b/src/components/tooltip/index.ts new file mode 100644 index 0000000..7c23f19 --- /dev/null +++ b/src/components/tooltip/index.ts @@ -0,0 +1 @@ +export { default as UTooltip } from './UTooltip.vue' diff --git a/src/components/vertical-navigation/index.ts b/src/components/vertical-navigation/index.ts new file mode 100644 index 0000000..123f30a --- /dev/null +++ b/src/components/vertical-navigation/index.ts @@ -0,0 +1 @@ +export { default as UVerticalNavigation } from './UVerticalNavigation.vue' diff --git a/vite.config.ts b/vite.config.ts index e18aaae..1276930 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,9 +1,20 @@ -import { resolve } from 'node:path' +import path, { resolve } from 'node:path' +import { fileURLToPath } from 'node:url' import { defineConfig } from 'vite' import Vue from '@vitejs/plugin-vue' import dts from 'vite-plugin-dts' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' +import { glob } from 'glob' + +const entry = Object.fromEntries( + glob + .sync('src/components/*/index.ts') + .map(file => [ + path.relative('src', file.slice(0, file.length - path.extname(file).length)), + fileURLToPath(new URL(file, import.meta.url)), + ]), +) const config = defineConfig({ resolve: { @@ -30,23 +41,35 @@ const config = defineConfig({ Components({ dts: 'src/components.d.ts', }), + { + name: 'post-process-rename-h', + enforce: 'post', + generateBundle(_options, bundle) { + for (const [fileName, file] of Object.entries(bundle)) { + if (file.type === 'chunk' && file.code && fileName.match(/^index-.*\.js$/)) { + file.code = file.code.replace(/},\s*h\s*=\s*{/g, '}, hh = {') + file.code = file.code.replace(/:\s*h\s*,/g, ': hh,') + } + } + }, + }, ], build: { emptyOutDir: false, lib: { - entry: resolve(__dirname, 'src/unuse-ui.ts'), - name: 'unuse-ui', - fileName: 'unuse-ui', + entry: { + ...entry, + index: fileURLToPath(new URL('src/unuse-ui.ts', import.meta.url)), + }, + formats: ['es'], }, rollupOptions: { external: [ 'vue', ], output: { - exports: 'named', - globals: { - vue: 'Vue', - }, + assetFileNames: 'assets/[name][extname]', + entryFileNames: '[name].js', }, }, },