@slidev/cli 51.4.0 → 51.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "./chunk-TJFRPB4N.js";
|
|
10
10
|
|
|
11
11
|
// package.json
|
|
12
|
-
var version = "51.
|
|
12
|
+
var version = "51.5.0";
|
|
13
13
|
|
|
14
14
|
// node/utils.ts
|
|
15
15
|
import { fileURLToPath } from "node:url";
|
|
@@ -51,8 +51,8 @@ function updateFrontmatterPatch(source, frontmatter) {
|
|
|
51
51
|
const valueNode = doc.createNode(value);
|
|
52
52
|
let found = false;
|
|
53
53
|
YAML.visit(doc.contents, {
|
|
54
|
-
Pair(_key, node,
|
|
55
|
-
if (
|
|
54
|
+
Pair(_key, node, path5) {
|
|
55
|
+
if (path5.length === 1 && YAML.isScalar(node.key) && node.key.value === key) {
|
|
56
56
|
node.value = valueNode;
|
|
57
57
|
found = true;
|
|
58
58
|
return YAML.visit.BREAK;
|
|
@@ -99,10 +99,10 @@ var officialThemes = {
|
|
|
99
99
|
};
|
|
100
100
|
var resolveTheme = createResolver("theme", officialThemes);
|
|
101
101
|
async function getThemeMeta(name, root) {
|
|
102
|
-
const
|
|
103
|
-
if (!existsSync(
|
|
102
|
+
const path5 = join(root, "package.json");
|
|
103
|
+
if (!existsSync(path5))
|
|
104
104
|
return {};
|
|
105
|
-
const { slidev = {}, engines = {} } = JSON.parse(await fs.readFile(
|
|
105
|
+
const { slidev = {}, engines = {} } = JSON.parse(await fs.readFile(path5, "utf-8"));
|
|
106
106
|
if (engines.slidev && !satisfies(version, engines.slidev, { includePrerelease: true }))
|
|
107
107
|
throw new Error(`[slidev] theme "${name}" requires Slidev version range "${engines.slidev}" but found "${version}"`);
|
|
108
108
|
return slidev;
|
|
@@ -112,7 +112,7 @@ async function getThemeMeta(name, root) {
|
|
|
112
112
|
import * as parser from "@slidev/parser/fs";
|
|
113
113
|
|
|
114
114
|
// node/options.ts
|
|
115
|
-
import
|
|
115
|
+
import path4 from "node:path";
|
|
116
116
|
import { objectMap as objectMap2, uniq as uniq5 } from "@antfu/utils";
|
|
117
117
|
import Debug from "debug";
|
|
118
118
|
import fg4 from "fast-glob";
|
|
@@ -145,14 +145,15 @@ async function resolveAddons(addonsInConfig) {
|
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
// node/setups/indexHtml.ts
|
|
148
|
-
import { existsSync as
|
|
148
|
+
import { existsSync as existsSync13, readFileSync as readFileSync2 } from "node:fs";
|
|
149
149
|
import { join as join13 } from "node:path";
|
|
150
150
|
import { slash as slash4 } from "@antfu/utils";
|
|
151
151
|
import { white, yellow as yellow2 } from "ansis";
|
|
152
152
|
import { escapeHtml } from "markdown-it/lib/common/utils.mjs";
|
|
153
|
+
import { createHead, transformHtmlTemplate } from "unhead/server";
|
|
153
154
|
|
|
154
155
|
// node/commands/shared.ts
|
|
155
|
-
import { existsSync as
|
|
156
|
+
import { existsSync as existsSync12 } from "node:fs";
|
|
156
157
|
import { join as join12 } from "node:path";
|
|
157
158
|
import MarkdownIt2 from "markdown-it";
|
|
158
159
|
import { loadConfigFromFile, mergeConfig as mergeConfig2 } from "vite";
|
|
@@ -747,7 +748,7 @@ var templateGlobalLayers = {
|
|
|
747
748
|
let n = 0;
|
|
748
749
|
function getComponent(names) {
|
|
749
750
|
const components = roots.flatMap((root) => names.map((name) => join4(root, name))).filter((i) => existsSync2(i));
|
|
750
|
-
imports.push(components.map((
|
|
751
|
+
imports.push(components.map((path5, i) => `import __n${n}_${i} from '${toAtFS(path5)}'`).join("\n"));
|
|
751
752
|
const render = components.map((_, i) => `h(__n${n}_${i})`).join(",");
|
|
752
753
|
n++;
|
|
753
754
|
return `{ render: () => [${render}] }`;
|
|
@@ -894,12 +895,12 @@ function createSetupTemplate(name) {
|
|
|
894
895
|
id: `/@slidev/setups/${name}`,
|
|
895
896
|
getContent({ roots }) {
|
|
896
897
|
const setups = roots.flatMap((i) => {
|
|
897
|
-
const
|
|
898
|
-
return [".ts", ".mts", ".js", ".mjs"].map((ext) =>
|
|
898
|
+
const path5 = join7(i, "setup", name);
|
|
899
|
+
return [".ts", ".mts", ".js", ".mjs"].map((ext) => path5 + ext);
|
|
899
900
|
}).filter((i) => existsSync4(i));
|
|
900
901
|
const imports = [];
|
|
901
|
-
setups.forEach((
|
|
902
|
-
imports.push(`import __n${idx} from '${toAtFS(
|
|
902
|
+
setups.forEach((path5, idx) => {
|
|
903
|
+
imports.push(`import __n${idx} from '${toAtFS(path5)}'`);
|
|
903
904
|
});
|
|
904
905
|
imports.push(`export default [${setups.map((_, idx) => `__n${idx}`).join(",")}]`);
|
|
905
906
|
return imports.join("\n");
|
|
@@ -1698,9 +1699,9 @@ import { deepMergeWithArray } from "@antfu/utils";
|
|
|
1698
1699
|
async function loadSetups(roots, filename, args, extraLoader) {
|
|
1699
1700
|
const returns = [];
|
|
1700
1701
|
for (const root of roots) {
|
|
1701
|
-
const
|
|
1702
|
-
if (existsSync6(
|
|
1703
|
-
const { default: setup } = await loadModule(
|
|
1702
|
+
const path5 = resolve4(root, "setup", filename);
|
|
1703
|
+
if (existsSync6(path5)) {
|
|
1704
|
+
const { default: setup } = await loadModule(path5);
|
|
1704
1705
|
const ret = await setup(...args);
|
|
1705
1706
|
if (ret)
|
|
1706
1707
|
returns.push(ret);
|
|
@@ -2229,11 +2230,11 @@ async function loadDrawings(options) {
|
|
|
2229
2230
|
suppressErrors: true
|
|
2230
2231
|
});
|
|
2231
2232
|
const obj = {};
|
|
2232
|
-
await Promise.all(files.map(async (
|
|
2233
|
-
const num = +basename(
|
|
2233
|
+
await Promise.all(files.map(async (path5) => {
|
|
2234
|
+
const num = +basename(path5, ".svg");
|
|
2234
2235
|
if (Number.isNaN(num))
|
|
2235
2236
|
return;
|
|
2236
|
-
const content = await fs6.readFile(
|
|
2237
|
+
const content = await fs6.readFile(path5, "utf8");
|
|
2237
2238
|
const lines = content.split(/\n/g);
|
|
2238
2239
|
obj[num.toString()] = lines.slice(1, -1).join("\n");
|
|
2239
2240
|
}));
|
|
@@ -2377,6 +2378,21 @@ async function createUnocssPlugin(options, pluginOptions) {
|
|
|
2377
2378
|
});
|
|
2378
2379
|
}
|
|
2379
2380
|
|
|
2381
|
+
// node/vite/userPlugins.ts
|
|
2382
|
+
import { existsSync as existsSync11 } from "node:fs";
|
|
2383
|
+
import path3 from "node:path";
|
|
2384
|
+
async function createUserVitePlugins(options) {
|
|
2385
|
+
const createPluginTasks = options.roots.map(async (root) => {
|
|
2386
|
+
const modulePath = path3.join(root, "setup", "vite-plugins.ts");
|
|
2387
|
+
if (existsSync11(modulePath)) {
|
|
2388
|
+
const module = await loadModule(modulePath);
|
|
2389
|
+
return module.default(options);
|
|
2390
|
+
}
|
|
2391
|
+
return [];
|
|
2392
|
+
});
|
|
2393
|
+
return (await Promise.all(createPluginTasks)).flatMap((p) => p);
|
|
2394
|
+
}
|
|
2395
|
+
|
|
2380
2396
|
// node/vite/vue.ts
|
|
2381
2397
|
import Vue from "@vitejs/plugin-vue";
|
|
2382
2398
|
import VueJsx from "@vitejs/plugin-vue-jsx";
|
|
@@ -2455,7 +2471,8 @@ function ViteSlidevPlugin(options, pluginOptions = {}, serverOptions = {}) {
|
|
|
2455
2471
|
createVueCompilerFlagsPlugin(options),
|
|
2456
2472
|
createUnocssPlugin(options, pluginOptions),
|
|
2457
2473
|
createStaticCopyPlugin(options, pluginOptions),
|
|
2458
|
-
createInspectPlugin(options, pluginOptions)
|
|
2474
|
+
createInspectPlugin(options, pluginOptions),
|
|
2475
|
+
createUserVitePlugins(options)
|
|
2459
2476
|
]);
|
|
2460
2477
|
}
|
|
2461
2478
|
|
|
@@ -2475,7 +2492,7 @@ async function resolveViteConfigs(options, baseConfig, overrideConfigs, command,
|
|
|
2475
2492
|
};
|
|
2476
2493
|
const files = options.roots.map((i) => join12(i, "vite.config.ts"));
|
|
2477
2494
|
for (const file of files) {
|
|
2478
|
-
if (!
|
|
2495
|
+
if (!existsSync12(file))
|
|
2479
2496
|
continue;
|
|
2480
2497
|
const viteConfig = await loadConfigFromFile(configEnv, file);
|
|
2481
2498
|
if (!viteConfig?.config)
|
|
@@ -2499,27 +2516,17 @@ async function resolveViteConfigs(options, baseConfig, overrideConfigs, command,
|
|
|
2499
2516
|
function toAttrValue(unsafe) {
|
|
2500
2517
|
return JSON.stringify(escapeHtml(String(unsafe)));
|
|
2501
2518
|
}
|
|
2502
|
-
function setupIndexHtml({ mode, entry, clientRoot, userRoot, roots, data, base }) {
|
|
2519
|
+
async function setupIndexHtml({ mode, entry, clientRoot, userRoot, roots, data, base }) {
|
|
2503
2520
|
let main = readFileSync2(join13(clientRoot, "index.html"), "utf-8");
|
|
2504
2521
|
let head = "";
|
|
2505
2522
|
let body = "";
|
|
2506
|
-
const { info, author, keywords } = data.headmatter;
|
|
2507
|
-
head += [
|
|
2508
|
-
`<meta name="slidev:version" content="${version}">`,
|
|
2509
|
-
mode === "dev" && `<meta charset="slidev:entry" content="${slash4(entry)}">`,
|
|
2510
|
-
`<link rel="icon" href="${data.config.favicon}">`,
|
|
2511
|
-
`<title>${getSlideTitle(data)}</title>`,
|
|
2512
|
-
info && `<meta name="description" content=${toAttrValue(info)}>`,
|
|
2513
|
-
author && `<meta name="author" content=${toAttrValue(author)}>`,
|
|
2514
|
-
keywords && `<meta name="keywords" content=${toAttrValue(Array.isArray(keywords) ? keywords.join(", ") : keywords)}>`
|
|
2515
|
-
].filter(Boolean).join("\n");
|
|
2516
2523
|
for (const root of roots) {
|
|
2517
|
-
const
|
|
2518
|
-
if (!
|
|
2524
|
+
const path5 = join13(root, "index.html");
|
|
2525
|
+
if (!existsSync13(path5))
|
|
2519
2526
|
continue;
|
|
2520
|
-
const index = readFileSync2(
|
|
2527
|
+
const index = readFileSync2(path5, "utf-8");
|
|
2521
2528
|
if (root === userRoot && index.includes("<!DOCTYPE")) {
|
|
2522
|
-
console.error(yellow2(`[Slidev] Ignored provided index.html with doctype declaration. (${white(
|
|
2529
|
+
console.error(yellow2(`[Slidev] Ignored provided index.html with doctype declaration. (${white(path5)})`));
|
|
2523
2530
|
console.error(yellow2("This file may be generated by Slidev, please remove it from your project."));
|
|
2524
2531
|
continue;
|
|
2525
2532
|
}
|
|
@@ -2528,22 +2535,55 @@ ${(index.match(/<head>([\s\S]*?)<\/head>/i)?.[1] || "").trim()}`;
|
|
|
2528
2535
|
body += `
|
|
2529
2536
|
${(index.match(/<body>([\s\S]*?)<\/body>/i)?.[1] || "").trim()}`;
|
|
2530
2537
|
}
|
|
2531
|
-
if (data.features.tweet)
|
|
2538
|
+
if (data.features.tweet) {
|
|
2532
2539
|
body += '\n<script async src="https://platform.twitter.com/widgets.js"></script>';
|
|
2540
|
+
}
|
|
2541
|
+
const webFontsLink = [];
|
|
2533
2542
|
if (data.config.fonts.webfonts.length) {
|
|
2534
2543
|
const { provider } = data.config.fonts;
|
|
2535
|
-
if (provider === "google")
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
<link rel="stylesheet" href="${generateCoollabsFontsUrl(data.config.fonts)}" type="text/css">`;
|
|
2544
|
+
if (provider === "google") {
|
|
2545
|
+
webFontsLink.push({ rel: "stylesheet", href: generateGoogleFontsUrl(data.config.fonts), type: "text/css" });
|
|
2546
|
+
} else if (provider === "coollabs") {
|
|
2547
|
+
webFontsLink.push({ rel: "stylesheet", href: generateCoollabsFontsUrl(data.config.fonts), type: "text/css" });
|
|
2548
|
+
}
|
|
2541
2549
|
}
|
|
2542
|
-
|
|
2543
|
-
|
|
2550
|
+
const { info, author, keywords } = data.headmatter;
|
|
2551
|
+
const seoMeta = data.headmatter.seoMeta ?? {};
|
|
2552
|
+
const title = getSlideTitle(data);
|
|
2553
|
+
const description = info ? toAttrValue(info) : null;
|
|
2554
|
+
const unhead = createHead({
|
|
2555
|
+
init: [
|
|
2556
|
+
{
|
|
2557
|
+
htmlAttrs: { lang: data.headmatter.lang ?? "en" },
|
|
2558
|
+
title,
|
|
2559
|
+
link: [
|
|
2560
|
+
{ rel: "icon", href: data.config.favicon },
|
|
2561
|
+
...webFontsLink
|
|
2562
|
+
],
|
|
2563
|
+
meta: [
|
|
2564
|
+
{ property: "slidev:version", content: version },
|
|
2565
|
+
{ charset: "slidev:entry", content: mode === "dev" && slash4(entry) },
|
|
2566
|
+
{ name: "description", content: description },
|
|
2567
|
+
{ name: "author", content: author ? toAttrValue(author) : null },
|
|
2568
|
+
{ name: "keywords", content: keywords ? toAttrValue(Array.isArray(keywords) ? keywords.join(", ") : keywords) : null },
|
|
2569
|
+
{ property: "og:title", content: seoMeta.ogTitle || title },
|
|
2570
|
+
{ property: "og:description", content: seoMeta.ogDescription || description },
|
|
2571
|
+
{ property: "og:image", content: seoMeta.ogImage },
|
|
2572
|
+
{ property: "og:url", content: seoMeta.ogUrl },
|
|
2573
|
+
{ property: "twitter:card", content: seoMeta.twitterCard },
|
|
2574
|
+
{ property: "twitter:site", content: seoMeta.twitterSite },
|
|
2575
|
+
{ property: "twitter:title", content: seoMeta.twitterTitle },
|
|
2576
|
+
{ property: "twitter:description", content: seoMeta.twitterDescription },
|
|
2577
|
+
{ property: "twitter:image", content: seoMeta.twitterImage },
|
|
2578
|
+
{ property: "twitter:url", content: seoMeta.twitterUrl }
|
|
2579
|
+
]
|
|
2580
|
+
}
|
|
2581
|
+
]
|
|
2582
|
+
});
|
|
2544
2583
|
const baseInDev = mode === "dev" && base ? base.slice(0, -1) : "";
|
|
2545
2584
|
main = main.replace("__ENTRY__", baseInDev + toAtFS(join13(clientRoot, "main.ts"))).replace("<!-- head -->", head).replace("<!-- body -->", body);
|
|
2546
|
-
|
|
2585
|
+
const html = await transformHtmlTemplate(unhead, main);
|
|
2586
|
+
return html;
|
|
2547
2587
|
}
|
|
2548
2588
|
|
|
2549
2589
|
// node/setups/katex.ts
|
|
@@ -2569,9 +2609,9 @@ async function setupShiki(roots) {
|
|
|
2569
2609
|
"shiki.ts",
|
|
2570
2610
|
[{
|
|
2571
2611
|
/** @deprecated */
|
|
2572
|
-
async loadTheme(
|
|
2612
|
+
async loadTheme(path5) {
|
|
2573
2613
|
console.warn("[slidev] `loadTheme` in `setup/shiki.ts` is deprecated. Pass directly the theme name it's supported by Shiki. For custom themes, load it manually via `JSON.parse(fs.readFileSync(path, 'utf-8'))` and pass the raw JSON object instead.");
|
|
2574
|
-
return JSON.parse(await fs8.readFile(
|
|
2614
|
+
return JSON.parse(await fs8.readFile(path5, "utf-8"));
|
|
2575
2615
|
}
|
|
2576
2616
|
}]
|
|
2577
2617
|
);
|
|
@@ -2659,7 +2699,7 @@ async function createDataUtils(resolved) {
|
|
|
2659
2699
|
return {
|
|
2660
2700
|
...await setupShiki(resolved.roots),
|
|
2661
2701
|
katexOptions: await setupKatex(resolved.roots),
|
|
2662
|
-
indexHtml: setupIndexHtml(resolved),
|
|
2702
|
+
indexHtml: await setupIndexHtml(resolved),
|
|
2663
2703
|
define: getDefine(resolved),
|
|
2664
2704
|
iconsResolvePath: [resolved.clientRoot, ...resolved.roots].reverse(),
|
|
2665
2705
|
isMonacoTypesIgnored: (pkg) => monacoTypesIgnorePackagesMatches.some((i) => i.test(pkg)),
|
|
@@ -2675,7 +2715,7 @@ async function createDataUtils(resolved) {
|
|
|
2675
2715
|
suppressErrors: true
|
|
2676
2716
|
});
|
|
2677
2717
|
for (const layoutPath of layoutPaths) {
|
|
2678
|
-
const layoutName =
|
|
2718
|
+
const layoutName = path4.basename(layoutPath).replace(/\.\w+$/, "");
|
|
2679
2719
|
layouts[layoutName] = layoutPath;
|
|
2680
2720
|
}
|
|
2681
2721
|
}
|
package/dist/cli.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createServer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HD7KRKPM.js";
|
|
4
4
|
import {
|
|
5
5
|
getThemeMeta,
|
|
6
6
|
loadSetups,
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
resolveTheme,
|
|
11
11
|
updateFrontmatterPatch,
|
|
12
12
|
version
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-7TKX73CW.js";
|
|
14
14
|
import {
|
|
15
15
|
getRoots,
|
|
16
16
|
isInstalledGlobally,
|
|
@@ -55,7 +55,8 @@ var CONFIG_RESTART_FIELDS = [
|
|
|
55
55
|
"css",
|
|
56
56
|
"mdc",
|
|
57
57
|
"editor",
|
|
58
|
-
"theme"
|
|
58
|
+
"theme",
|
|
59
|
+
"seoMeta"
|
|
59
60
|
];
|
|
60
61
|
var FILES_CREATE_RESTART = [
|
|
61
62
|
"global-bottom.vue",
|
|
@@ -338,7 +339,7 @@ cli.command(
|
|
|
338
339
|
}).strict().help(),
|
|
339
340
|
async (args) => {
|
|
340
341
|
const { entry, theme, base, download, out, inspect } = args;
|
|
341
|
-
const { build } = await import("./build-
|
|
342
|
+
const { build } = await import("./build-C2XVOCCA.js");
|
|
342
343
|
for (const entryFile of entry) {
|
|
343
344
|
const options = await resolveOptions({ entry: entryFile, theme, inspect, download, base }, "build");
|
|
344
345
|
printInfo(options);
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createServer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HD7KRKPM.js";
|
|
4
4
|
import {
|
|
5
5
|
ViteSlidevPlugin,
|
|
6
6
|
createDataUtils,
|
|
7
7
|
parser,
|
|
8
8
|
resolveOptions
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-7TKX73CW.js";
|
|
10
10
|
import "./chunk-TJFRPB4N.js";
|
|
11
11
|
export {
|
|
12
12
|
ViteSlidevPlugin,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slidev/cli",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "51.
|
|
4
|
+
"version": "51.5.0",
|
|
5
5
|
"description": "Presentation slides for developers",
|
|
6
6
|
"author": "antfu <anthonyfu117@hotmail.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -42,19 +42,19 @@
|
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@antfu/ni": "^24.
|
|
45
|
+
"@antfu/ni": "^24.3.0",
|
|
46
46
|
"@antfu/utils": "^9.1.0",
|
|
47
47
|
"@iconify-json/carbon": "^1.2.8",
|
|
48
48
|
"@iconify-json/ph": "^1.2.2",
|
|
49
49
|
"@iconify-json/svg-spinners": "^1.2.2",
|
|
50
50
|
"@lillallol/outline-pdf": "^4.0.0",
|
|
51
|
-
"@shikijs/markdown-it": "^3.1
|
|
52
|
-
"@shikijs/twoslash": "^3.1
|
|
53
|
-
"@shikijs/vitepress-twoslash": "^3.1
|
|
51
|
+
"@shikijs/markdown-it": "^3.2.1",
|
|
52
|
+
"@shikijs/twoslash": "^3.2.1",
|
|
53
|
+
"@shikijs/vitepress-twoslash": "^3.2.1",
|
|
54
54
|
"@unocss/extractor-mdc": "^66.0.0",
|
|
55
55
|
"@unocss/reset": "^66.0.0",
|
|
56
|
-
"@vitejs/plugin-vue": "^5.2.
|
|
57
|
-
"@vitejs/plugin-vue-jsx": "^4.1.
|
|
56
|
+
"@vitejs/plugin-vue": "^5.2.3",
|
|
57
|
+
"@vitejs/plugin-vue-jsx": "^4.1.2",
|
|
58
58
|
"ansis": "^3.17.0",
|
|
59
59
|
"chokidar": "^4.0.3",
|
|
60
60
|
"cli-progress": "^3.12.0",
|
|
@@ -88,29 +88,30 @@
|
|
|
88
88
|
"resolve-from": "^5.0.0",
|
|
89
89
|
"resolve-global": "^2.0.0",
|
|
90
90
|
"semver": "^7.7.1",
|
|
91
|
-
"shiki": "^3.1
|
|
92
|
-
"shiki-magic-move": "^1.0
|
|
91
|
+
"shiki": "^3.2.1",
|
|
92
|
+
"shiki-magic-move": "^1.1.0",
|
|
93
93
|
"sirv": "^3.0.1",
|
|
94
94
|
"source-map-js": "^1.2.1",
|
|
95
95
|
"typescript": "^5.8.2",
|
|
96
|
+
"unhead": "^2.0.2",
|
|
96
97
|
"unocss": "^66.0.0",
|
|
97
98
|
"unplugin-icons": "^22.1.0",
|
|
98
99
|
"unplugin-vue-components": "^28.4.1",
|
|
99
100
|
"unplugin-vue-markdown": "^28.3.1",
|
|
100
101
|
"untun": "^0.1.3",
|
|
101
102
|
"uqr": "^0.1.2",
|
|
102
|
-
"vite": "^6.2.
|
|
103
|
+
"vite": "^6.2.3",
|
|
103
104
|
"vite-plugin-inspect": "^11.0.0",
|
|
104
|
-
"vite-plugin-remote-assets": "^
|
|
105
|
+
"vite-plugin-remote-assets": "^2.0.0",
|
|
105
106
|
"vite-plugin-static-copy": "^2.3.0",
|
|
106
107
|
"vite-plugin-vue-server-ref": "^1.0.0",
|
|
107
108
|
"vitefu": "^1.0.6",
|
|
108
109
|
"vue": "^3.5.13",
|
|
109
|
-
"yaml": "^2.7.
|
|
110
|
+
"yaml": "^2.7.1",
|
|
110
111
|
"yargs": "^17.7.2",
|
|
111
|
-
"@slidev/
|
|
112
|
-
"@slidev/
|
|
113
|
-
"@slidev/
|
|
112
|
+
"@slidev/client": "51.5.0",
|
|
113
|
+
"@slidev/parser": "51.5.0",
|
|
114
|
+
"@slidev/types": "51.5.0"
|
|
114
115
|
},
|
|
115
116
|
"devDependencies": {
|
|
116
117
|
"@hedgedoc/markdown-it-plugins": "^2.1.4",
|
|
@@ -120,6 +121,6 @@
|
|
|
120
121
|
"scripts": {
|
|
121
122
|
"build": "rimraf dist && tsup node/index.ts node/cli.ts",
|
|
122
123
|
"dev": "nr build --watch",
|
|
123
|
-
"start": "
|
|
124
|
+
"start": "tsx node/cli.ts"
|
|
124
125
|
}
|
|
125
126
|
}
|