From f32511be6a8e70ae8a566970f2392431e1e2523d Mon Sep 17 00:00:00 2001 From: pengzhanbo Date: Tue, 23 Jul 2024 00:28:58 +0800 Subject: [PATCH] refactor!: removed `plugin-iconify` --- plugins/plugin-iconify/LICENSE | 21 ----- plugins/plugin-iconify/README.md | 47 ----------- plugins/plugin-iconify/package.json | 51 ------------ .../src/client/components/Iconify.vue | 78 ------------------- .../src/client/composables/iconify.ts | 32 -------- .../src/client/composables/index.ts | 1 - plugins/plugin-iconify/src/client/config.ts | 11 --- plugins/plugin-iconify/src/node/index.ts | 6 -- plugins/plugin-iconify/src/node/plugin.ts | 24 ------ plugins/plugin-iconify/src/shim.d.ts | 6 -- plugins/plugin-iconify/tsup.config.ts | 38 --------- .../node/autoFrontmatter/resolveOptions.ts | 10 +-- 12 files changed, 4 insertions(+), 321 deletions(-) delete mode 100644 plugins/plugin-iconify/LICENSE delete mode 100644 plugins/plugin-iconify/README.md delete mode 100644 plugins/plugin-iconify/package.json delete mode 100644 plugins/plugin-iconify/src/client/components/Iconify.vue delete mode 100644 plugins/plugin-iconify/src/client/composables/iconify.ts delete mode 100644 plugins/plugin-iconify/src/client/composables/index.ts delete mode 100644 plugins/plugin-iconify/src/client/config.ts delete mode 100644 plugins/plugin-iconify/src/node/index.ts delete mode 100644 plugins/plugin-iconify/src/node/plugin.ts delete mode 100644 plugins/plugin-iconify/src/shim.d.ts delete mode 100644 plugins/plugin-iconify/tsup.config.ts diff --git a/plugins/plugin-iconify/LICENSE b/plugins/plugin-iconify/LICENSE deleted file mode 100644 index 9f677c90..00000000 --- a/plugins/plugin-iconify/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (C) 2021 - PRESENT by pengzhanbo - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/plugins/plugin-iconify/README.md b/plugins/plugin-iconify/README.md deleted file mode 100644 index eed2a744..00000000 --- a/plugins/plugin-iconify/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# `@vuepress-plume/plugin-iconify` - -添加 `iconify` 图标库支持。并注入全局组件 `` - -## Install - -```sh -npm install @vuepress-plume/plugin-iconify -# or -pnpm add @vuepress-plume/plugin-iconify -# or -yarn add @vuepress-plume/plugin-iconify -``` - -## Usage - -``` js -// .vuepress/config.[jt]s -import { iconifyPlugin } from '@vuepress-plume/plugin-iconify' - -export default { - // ... - plugins: [ - iconifyPlugin() - ] - // ... -} -``` - -## Options - -```ts -interface IconifyOptions { - /** - * 组件名, 默认 `Iconify` - */ - componentName?: string - color?: string - size?: string | number -} -``` - -## Component - -```vue - -``` diff --git a/plugins/plugin-iconify/package.json b/plugins/plugin-iconify/package.json deleted file mode 100644 index 5c707da0..00000000 --- a/plugins/plugin-iconify/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "@vuepress-plume/plugin-iconify", - "type": "module", - "version": "1.0.0-rc.81", - "description": "The Plugin for VuePress 2 - iconify", - "author": "pengzhanbo ", - "license": "MIT", - "homepage": "https://github.com/pengzhanbo/vuepress-theme-plume#readme", - "repository": { - "type": "git", - "url": "git+https://github.com/pengzhanbo/vuepress-theme-plume.git", - "directory": "plugins/plugin-iconify" - }, - "bugs": { - "url": "https://github.com/pengzhanbo/vuepress-theme-plume/issues" - }, - "exports": { - ".": { - "types": "./lib/node/index.d.ts", - "import": "./lib/node/index.js" - }, - "./package.json": "./package.json" - }, - "main": "lib/node/index.js", - "types": "./lib/node/index.d.ts", - "files": [ - "lib" - ], - "scripts": { - "build": "pnpm run copy && pnpm run tsup", - "clean": "rimraf --glob ./lib", - "copy": "cpx \"src/**/*.{d.ts,vue,css,scss,jpg,png}\" lib", - "tsup": "tsup --config tsup.config.ts" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.14" - }, - "dependencies": { - "@iconify/vue": "^4.1.2", - "vue": "^3.4.33" - }, - "publishConfig": { - "access": "public" - }, - "keyword": [ - "VuePress", - "vuepress plugin", - "iconify", - "vuepress-plugin-iconify" - ] -} diff --git a/plugins/plugin-iconify/src/client/components/Iconify.vue b/plugins/plugin-iconify/src/client/components/Iconify.vue deleted file mode 100644 index cd675ccb..00000000 --- a/plugins/plugin-iconify/src/client/components/Iconify.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - diff --git a/plugins/plugin-iconify/src/client/composables/iconify.ts b/plugins/plugin-iconify/src/client/composables/iconify.ts deleted file mode 100644 index 352a750f..00000000 --- a/plugins/plugin-iconify/src/client/composables/iconify.ts +++ /dev/null @@ -1,32 +0,0 @@ -import type { IconifyIcon } from '@iconify/vue' -import { loadIcon } from '@iconify/vue' -import { ref, watch } from 'vue' -import type { Ref } from 'vue' - -export function useIconify(name: Ref) { - const icon = ref(null) - const loaded = ref(false) - - async function loadIconComponent() { - if (icon.value) - return - - if (!__VUEPRESS_SSR__) { - try { - loaded.value = false - const cached = await loadIcon(name.value) - icon.value = cached - } - finally { - loaded.value = true - } - } - else { - loaded.value = true - } - } - - watch(() => name.value, loadIconComponent, { immediate: true }) - - return { icon, loaded } -} diff --git a/plugins/plugin-iconify/src/client/composables/index.ts b/plugins/plugin-iconify/src/client/composables/index.ts deleted file mode 100644 index be30fbe9..00000000 --- a/plugins/plugin-iconify/src/client/composables/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './iconify.js' diff --git a/plugins/plugin-iconify/src/client/config.ts b/plugins/plugin-iconify/src/client/config.ts deleted file mode 100644 index f132faf2..00000000 --- a/plugins/plugin-iconify/src/client/config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { defineClientConfig } from 'vuepress/client' -import type { ClientConfig } from 'vuepress/client' -import Iconify from './components/Iconify.vue' - -declare const __VP_ICONIFY_NAME__: string -export default defineClientConfig({ - enhance({ app }) { - const name = __VP_ICONIFY_NAME__ || 'Iconify' - app.component(name, Iconify) - }, -}) as ClientConfig diff --git a/plugins/plugin-iconify/src/node/index.ts b/plugins/plugin-iconify/src/node/index.ts deleted file mode 100644 index b7f9afcd..00000000 --- a/plugins/plugin-iconify/src/node/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { iconifyPlugin } from './plugin.js' - -export * from './plugin.js' - -/** @deprecated 请使用 具名导出 替代 默认导出 */ -export default iconifyPlugin diff --git a/plugins/plugin-iconify/src/node/plugin.ts b/plugins/plugin-iconify/src/node/plugin.ts deleted file mode 100644 index 72d5417d..00000000 --- a/plugins/plugin-iconify/src/node/plugin.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { Plugin } from 'vuepress/core' -import { getDirname, path } from 'vuepress/utils' - -export interface IconifyPluginOptions { - componentName?: string - color?: string - size?: string | number -} - -export function iconifyPlugin({ - componentName = 'Iconify', - size = '1em', - color = 'currentColor', -}: IconifyPluginOptions = {}): Plugin { - return { - name: '@vuepress-plume/plugin-iconify', - define: { - __VP_ICONIFY_NAME__: componentName, - __VP_ICONIFY_SIZE__: size, - __VP_ICONIFY_COLOR__: color, - }, - clientConfigFile: path.resolve(getDirname(import.meta.url), '../client/config.js'), - } -} diff --git a/plugins/plugin-iconify/src/shim.d.ts b/plugins/plugin-iconify/src/shim.d.ts deleted file mode 100644 index f1c86e6f..00000000 --- a/plugins/plugin-iconify/src/shim.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -declare module '*.vue' { - const comp: any - export default comp -} - -declare const __VUEPRESS_SSR__: boolean diff --git a/plugins/plugin-iconify/tsup.config.ts b/plugins/plugin-iconify/tsup.config.ts deleted file mode 100644 index 875ee7a5..00000000 --- a/plugins/plugin-iconify/tsup.config.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { type Options, defineConfig } from 'tsup' - -const clientExternal: (string | RegExp)[] = [ - /.*\.vue$/, - /.*\.css$/, -] - -export default defineConfig(() => { - const DEFAULT_OPTIONS: Options = { - dts: true, - sourcemap: false, - splitting: false, - format: 'esm', - } - return [ - // node - { - ...DEFAULT_OPTIONS, - entry: ['./src/node/index.ts'], - outDir: './lib/node', - target: 'node18', - }, - // client/composables/index.js - { - ...DEFAULT_OPTIONS, - entry: ['./src/client/composables/index.ts'], - outDir: './lib/client/composables', - external: clientExternal, - }, - // client/config.js - { - ...DEFAULT_OPTIONS, - entry: ['./src/client/config.ts'], - outDir: './lib/client', - external: clientExternal, - }, - ] -}) diff --git a/theme/src/node/autoFrontmatter/resolveOptions.ts b/theme/src/node/autoFrontmatter/resolveOptions.ts index 81444b22..c417240b 100644 --- a/theme/src/node/autoFrontmatter/resolveOptions.ts +++ b/theme/src/node/autoFrontmatter/resolveOptions.ts @@ -39,12 +39,10 @@ export function resolveOptions( } const notesList = resolveNotesOptions(localeOptions) - const localesNotesDirs = notesList - .flatMap(({ notes, dir }) => { - dir = removeLeadingSlash(dir || '') - return notes.map(note => normalizePath(`${dir}/${note.dir || ''}/`)) - }) - .filter(Boolean) + const localesNotesDirs = uniq(notesList + .flatMap(({ notes, dir }) => + notes.map(note => removeLeadingSlash(normalizePath(`${dir}/${note.dir || ''}/`))), + )) const baseFrontmatter: AutoFrontmatterObject = {}