From 42dc9fab697bd7d108de9cc4ebe8e082f6390ae5 Mon Sep 17 00:00:00 2001 From: _Kerman Date: Sat, 24 Aug 2024 11:17:02 +0800 Subject: [PATCH 1/5] fix: should resolve icons from all roots --- packages/client/uno.config.ts | 7 ++----- packages/slidev/node/options.ts | 3 ++- packages/slidev/node/vite/icons.ts | 5 ++--- packages/types/src/index.ts | 1 + packages/types/src/options.ts | 1 + shim.d.ts | 5 +++++ 6 files changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/client/uno.config.ts b/packages/client/uno.config.ts index f7bc212454..8b0a76d2b4 100644 --- a/packages/client/uno.config.ts +++ b/packages/client/uno.config.ts @@ -42,13 +42,10 @@ export default defineConfig({ presetUno(), presetAttributify(), presetIcons({ - collectionsNodeResolvePath: fileURLToPath(import.meta.url), + collectionsNodeResolvePath: globalThis.__SLIDEV_OPTIONS__?.utils.iconsResolvePath ?? fileURLToPath(import.meta.url), collections: { slidev: { - logo: async () => { - const content = readFileSync(fileURLToPath(new URL('assets/logo.svg', import.meta.url)), 'utf-8') - return content - }, + logo: () => readFileSync(fileURLToPath(new URL('assets/logo.svg', import.meta.url)), 'utf-8'), }, }, }), diff --git a/packages/slidev/node/options.ts b/packages/slidev/node/options.ts index 861805d646..34c0260c18 100644 --- a/packages/slidev/node/options.ts +++ b/packages/slidev/node/options.ts @@ -64,7 +64,7 @@ export async function resolveOptions( roots, } - return { + return globalThis.__SLIDEV_OPTIONS__ = { ...resolved, utils: await createDataUtils(resolved), } @@ -80,6 +80,7 @@ export async function createDataUtils(resolved: Omit monacoTypesIgnorePackagesMatches.some(i => i(pkg)), getLayouts: () => { const now = Date.now() diff --git a/packages/slidev/node/vite/icons.ts b/packages/slidev/node/vite/icons.ts index 7c8f1b0ecb..4fb67df568 100644 --- a/packages/slidev/node/vite/icons.ts +++ b/packages/slidev/node/vite/icons.ts @@ -1,14 +1,13 @@ -import { fileURLToPath } from 'node:url' import type { ResolvedSlidevOptions, SlidevPluginOptions } from '@slidev/types' import Icons from 'unplugin-icons/vite' export function createIconsPlugin( - _options: ResolvedSlidevOptions, + options: ResolvedSlidevOptions, pluginOptions: SlidevPluginOptions, ) { return Icons({ defaultClass: 'slidev-icon', - collectionsNodeResolvePath: fileURLToPath(import.meta.url), + collectionsNodeResolvePath: options.utils.iconsResolvePath, ...pluginOptions.icons, }) } diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index dbaa1f38cb..5e8291c178 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -11,3 +11,4 @@ export * from './vite' export * from './transform' export * from './clicks' export * from './frontmatter' +export * from './unocss' diff --git a/packages/types/src/options.ts b/packages/types/src/options.ts index ad03f4e131..25a87b92c7 100644 --- a/packages/types/src/options.ts +++ b/packages/types/src/options.ts @@ -49,6 +49,7 @@ export interface ResolvedSlidevUtils { shiki: HighlighterGeneric shikiOptions: MarkdownItShikiOptions indexHtml: string + iconsResolvePath: string[] isMonacoTypesIgnored: (pkg: string) => boolean getLayouts: () => Record } diff --git a/shim.d.ts b/shim.d.ts index 65d3b5a602..97f4344348 100644 --- a/shim.d.ts +++ b/shim.d.ts @@ -1,5 +1,6 @@ export {} declare global { + // Client env only const __DEV__: boolean const __SLIDEV_HASH_ROUTE__: boolean const __SLIDEV_CLIENT_ROOT__: string @@ -11,6 +12,10 @@ declare global { const __SLIDEV_FEATURE_PRINT__: boolean const __SLIDEV_FEATURE_WAKE_LOCK__: boolean const __SLIDEV_HAS_SERVER__: boolean + + // Node env only + // eslint-disable-next-line no-var, vars-on-top + var __SLIDEV_OPTIONS__: import('@slidev/types').ResolvedSlidevOptions | undefined } declare module '@vue/runtime-core' { From 9f173229e70543b06b26c8b2ed9930553b4ca71e Mon Sep 17 00:00:00 2001 From: _Kerman Date: Sat, 24 Aug 2024 11:19:47 +0800 Subject: [PATCH 2/5] Discard changes to packages/types/src/index.ts --- packages/types/src/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 5e8291c178..dbaa1f38cb 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -11,4 +11,3 @@ export * from './vite' export * from './transform' export * from './clicks' export * from './frontmatter' -export * from './unocss' From 14e163f10709cb1a6b351313731c79c6acd7e9ef Mon Sep 17 00:00:00 2001 From: _Kerman Date: Sat, 24 Aug 2024 13:30:13 +0800 Subject: [PATCH 3/5] remove globalThis usage --- packages/client/uno.config.ts | 11 ----------- packages/slidev/node/options.ts | 2 +- packages/slidev/node/setups/unocss.ts | 19 ++++++++++++++++--- shim.d.ts | 5 ----- 4 files changed, 17 insertions(+), 20 deletions(-) diff --git a/packages/client/uno.config.ts b/packages/client/uno.config.ts index 8b0a76d2b4..a4a33beaab 100644 --- a/packages/client/uno.config.ts +++ b/packages/client/uno.config.ts @@ -1,9 +1,6 @@ -import { fileURLToPath } from 'node:url' -import { readFileSync } from 'node:fs' import { defineConfig, presetAttributify, - presetIcons, presetTypography, presetUno, transformerDirectives, @@ -41,14 +38,6 @@ export default defineConfig({ presets: [ presetUno(), presetAttributify(), - presetIcons({ - collectionsNodeResolvePath: globalThis.__SLIDEV_OPTIONS__?.utils.iconsResolvePath ?? fileURLToPath(import.meta.url), - collections: { - slidev: { - logo: () => readFileSync(fileURLToPath(new URL('assets/logo.svg', import.meta.url)), 'utf-8'), - }, - }, - }), presetTypography(), ], transformers: [ diff --git a/packages/slidev/node/options.ts b/packages/slidev/node/options.ts index 34c0260c18..08a94e480e 100644 --- a/packages/slidev/node/options.ts +++ b/packages/slidev/node/options.ts @@ -64,7 +64,7 @@ export async function resolveOptions( roots, } - return globalThis.__SLIDEV_OPTIONS__ = { + return { ...resolved, utils: await createDataUtils(resolved), } diff --git a/packages/slidev/node/setups/unocss.ts b/packages/slidev/node/setups/unocss.ts index b3c9eb9ad9..8c2e345de0 100644 --- a/packages/slidev/node/setups/unocss.ts +++ b/packages/slidev/node/setups/unocss.ts @@ -1,14 +1,15 @@ import { resolve } from 'node:path' -import { existsSync } from 'node:fs' +import { existsSync, readFileSync } from 'node:fs' +import { fileURLToPath } from 'node:url' import type { Theme } from '@unocss/preset-uno' import type { UserConfig } from '@unocss/core' -import { mergeConfigs } from 'unocss' +import { mergeConfigs, presetIcons } from 'unocss' import type { ResolvedSlidevOptions, UnoSetup } from '@slidev/types' import { loadSetups } from '../setups/load' import { loadModule } from '../utils' export default async function setupUnocss( - { clientRoot, roots, data }: ResolvedSlidevOptions, + { clientRoot, roots, data, utils }: ResolvedSlidevOptions, ) { function loadFileConfigs(root: string): UserConfig[] { return [ @@ -23,6 +24,18 @@ export default async function setupUnocss( } const configs = [ + { + presets: [ + presetIcons({ + collectionsNodeResolvePath: utils.iconsResolvePath, + collections: { + slidev: { + logo: () => readFileSync(fileURLToPath(new URL('assets/logo.svg', import.meta.url)), 'utf-8'), + }, + }, + }), + ], + }, ...loadFileConfigs(clientRoot), ...await loadSetups(roots, 'unocss.ts', [], loadFileConfigs), ].filter(Boolean) as UserConfig[] diff --git a/shim.d.ts b/shim.d.ts index 97f4344348..65d3b5a602 100644 --- a/shim.d.ts +++ b/shim.d.ts @@ -1,6 +1,5 @@ export {} declare global { - // Client env only const __DEV__: boolean const __SLIDEV_HASH_ROUTE__: boolean const __SLIDEV_CLIENT_ROOT__: string @@ -12,10 +11,6 @@ declare global { const __SLIDEV_FEATURE_PRINT__: boolean const __SLIDEV_FEATURE_WAKE_LOCK__: boolean const __SLIDEV_HAS_SERVER__: boolean - - // Node env only - // eslint-disable-next-line no-var, vars-on-top - var __SLIDEV_OPTIONS__: import('@slidev/types').ResolvedSlidevOptions | undefined } declare module '@vue/runtime-core' { From b512aa4ba8696a0b79b6acddb1774bc14cf36d6a Mon Sep 17 00:00:00 2001 From: _Kerman Date: Sat, 24 Aug 2024 13:31:24 +0800 Subject: [PATCH 4/5] fix --- packages/slidev/node/setups/unocss.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/slidev/node/setups/unocss.ts b/packages/slidev/node/setups/unocss.ts index 8c2e345de0..2a17795f03 100644 --- a/packages/slidev/node/setups/unocss.ts +++ b/packages/slidev/node/setups/unocss.ts @@ -1,6 +1,5 @@ import { resolve } from 'node:path' import { existsSync, readFileSync } from 'node:fs' -import { fileURLToPath } from 'node:url' import type { Theme } from '@unocss/preset-uno' import type { UserConfig } from '@unocss/core' import { mergeConfigs, presetIcons } from 'unocss' @@ -30,7 +29,7 @@ export default async function setupUnocss( collectionsNodeResolvePath: utils.iconsResolvePath, collections: { slidev: { - logo: () => readFileSync(fileURLToPath(new URL('assets/logo.svg', import.meta.url)), 'utf-8'), + logo: () => readFileSync(resolve(clientRoot, 'assets/logo.svg'), 'utf-8'), }, }, }), From e42b7a0394fa179ba07dbcf3262ca5ee67745834 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 26 Aug 2024 18:49:31 +0200 Subject: [PATCH 5/5] chore: comment --- packages/client/uno.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/client/uno.config.ts b/packages/client/uno.config.ts index a4a33beaab..b90783ab4e 100644 --- a/packages/client/uno.config.ts +++ b/packages/client/uno.config.ts @@ -39,6 +39,7 @@ export default defineConfig({ presetUno(), presetAttributify(), presetTypography(), + /* Preset Icons is added in ../node/setups/unocss.ts */ ], transformers: [ transformerDirectives({ enforce: 'pre' }),