From 4bbc3b45a24466bd4a896c5b98b2fb5fb08bc964 Mon Sep 17 00:00:00 2001 From: robonen Date: Sun, 6 Oct 2024 07:31:29 +0700 Subject: [PATCH] feat(packages/vue): add build config --- packages/vue/build.config.ts | 10 +++++ packages/vue/package.json | 12 +++--- packages/vue/src/composables/index.ts | 1 - .../vue/src/composables/tryOnMounted/index.ts | 38 +++++++++++++++++++ pnpm-lock.yaml | 3 ++ 5 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 packages/vue/build.config.ts create mode 100644 packages/vue/src/composables/tryOnMounted/index.ts diff --git a/packages/vue/build.config.ts b/packages/vue/build.config.ts new file mode 100644 index 0000000..447d3fb --- /dev/null +++ b/packages/vue/build.config.ts @@ -0,0 +1,10 @@ +import { defineBuildConfig } from 'unbuild'; + +export default defineBuildConfig({ + externals: ['vue'], + rollup: { + esbuild: { + // minify: true, + }, + }, +}); \ No newline at end of file diff --git a/packages/vue/package.json b/packages/vue/package.json index d64aa2f..7db179f 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -19,24 +19,26 @@ "files": [ "dist" ], - "main": "./dist/index.umd.js", - "module": "./dist/index.js", + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", "types": "./dist/index.d.ts", "exports": { ".": { - "import": "./dist/index.js", - "require": "./dist/index.umd.js", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs", "types": "./dist/index.d.ts" } }, "scripts": { "test": "vitest run", - "dev": "vitest dev" + "dev": "vitest dev", + "build": "unbuild" }, "devDependencies": { "@robonen/tsconfig": "workspace:*", "@vue/test-utils": "catalog:", "jsdom": "catalog:", + "unbuild": "catalog:", "vitest": "catalog:" }, "dependencies": { diff --git a/packages/vue/src/composables/index.ts b/packages/vue/src/composables/index.ts index 8194544..ab6c25f 100644 --- a/packages/vue/src/composables/index.ts +++ b/packages/vue/src/composables/index.ts @@ -6,4 +6,3 @@ export * from './useMounted'; export * from './useRenderCount'; export * from './useSupported'; export * from './useSyncRefs'; -export * from './useToggle'; diff --git a/packages/vue/src/composables/tryOnMounted/index.ts b/packages/vue/src/composables/tryOnMounted/index.ts new file mode 100644 index 0000000..6f377f9 --- /dev/null +++ b/packages/vue/src/composables/tryOnMounted/index.ts @@ -0,0 +1,38 @@ +import { onMounted, nextTick, type ComponentInternalInstance } from 'vue'; +import { getLifeCycleTarger } from '../../utils'; + +export interface TryOnMountedOptions { + sync?: boolean; + target?: ComponentInternalInstance; +} + +/** + * @name tryOnMounted + * @category Components + * @description Calls a function if it's inside a component lifecycle hook, otherwise just calls it + * + * @param {Function} fn The function to call + * @param {TryOnMountedOptions} [options={}] The options for the try on mounted function + * @returns {void} + * + * @example + * tryOnMounted(() => console.log('Mounted!')); + * + * @example + * tryOnMounted(() => console.log('Mounted!'), { sync: false }); + */ +export function tryOnMounted(fn: () => void, options: TryOnMountedOptions = {}) { + const instance = getLifeCycleTarger(); + + const { + sync = true, + target, + } = options; + + if (instance) + onMounted(fn, target); + else if (sync) + fn(); + else + nextTick(fn); +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 48bf52f..1e7c5d7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -110,6 +110,9 @@ importers: jsdom: specifier: 'catalog:' version: 25.0.1 + unbuild: + specifier: 'catalog:' + version: 3.0.0-rc.8(typescript@5.4.4) vitest: specifier: 'catalog:' version: 2.1.2(@types/node@20.16.10)(jsdom@25.0.1)