返回 slidev
package.json
根目录 / packages / vscode / package.json
1 {
2 "publisher": "antfu",
3 "name": "slidev",
4 "displayName": "Slidev",
5 "type": "module",
6 "preview": true,
7 "version": "52.19.0",
8 "private": true,
9 "description": "Slidev support for VS Code",
10 "license": "MIT",
11 "repository": {
12 "type": "git",
13 "url": "https://github.com/slidevjs/slidev"
14 },
15 "categories": [
16 "Other"
17 ],
18 "main": "./dist/index.cjs",
19 "icon": "dist/res/logo.png",
20 "engines": {
21 "vscode": "^1.99.0"
22 },
23 "activationEvents": [
24 "workspaceContains:**/*.md"
25 ],
26 "contributes": {
27 "languages": [
28 {
29 "id": "markdown",
30 "configuration": "./syntaxes/language-configuration.json"
31 },
32 {
33 "id": "slidev"
34 }
35 ],
36 "grammars": [
37 {
38 "language": "slidev",
39 "scopeName": "source.slidev",
40 "path": "./syntaxes/slidev.tmLanguage.json",
41 "embeddedLanguages": {
42 "source.ts": "typescript",
43 "source.yaml": "yaml"
44 }
45 },
46 {
47 "path": "./syntaxes/markdown.json",
48 "scopeName": "inject-to-markdown.main.slidev",
49 "injectTo": [
50 "text.html.markdown"
51 ],
52 "embeddedLanguages": {
53 "source.slidev": "slidev"
54 }
55 },
56 {
57 "path": "./syntaxes/codeblock.json",
58 "scopeName": "inject-to-markdown.codeblock.slidev",
59 "injectTo": [
60 "text.html.markdown"
61 ],
62 "embeddedLanguages": {
63 "source.slidev": "slidev",
64 "source.ts": "typescript"
65 }
66 },
67 {
68 "path": "./syntaxes/codeblock-patch.json",
69 "scopeName": "inject-to-markdown.codeblock.patch.slidev",
70 "injectTo": [
71 "text.html.markdown"
72 ],
73 "embeddedLanguages": {
74 "source.slidev": "slidev",
75 "meta.embedded.block.html": "html",
76 "source.js": "javascript",
77 "source.css": "css",
78 "meta.embedded.block.frontmatter": "yaml",
79 "meta.embedded.block.css": "css",
80 "meta.embedded.block.ini": "ini",
81 "meta.embedded.block.java": "java",
82 "meta.embedded.block.lua": "lua",
83 "meta.embedded.block.makefile": "makefile",
84 "meta.embedded.block.perl": "perl",
85 "meta.embedded.block.r": "r",
86 "meta.embedded.block.ruby": "ruby",
87 "meta.embedded.block.php": "php",
88 "meta.embedded.block.sql": "sql",
89 "meta.embedded.block.vs_net": "vs_net",
90 "meta.embedded.block.xml": "xml",
91 "meta.embedded.block.xsl": "xsl",
92 "meta.embedded.block.yaml": "yaml",
93 "meta.embedded.block.dosbatch": "dosbatch",
94 "meta.embedded.block.clojure": "clojure",
95 "meta.embedded.block.coffee": "coffee",
96 "meta.embedded.block.c": "c",
97 "meta.embedded.block.cpp": "cpp",
98 "meta.embedded.block.diff": "diff",
99 "meta.embedded.block.dockerfile": "dockerfile",
100 "meta.embedded.block.go": "go",
101 "meta.embedded.block.groovy": "groovy",
102 "meta.embedded.block.pug": "jade",
103 "meta.embedded.block.javascript": "javascript",
104 "meta.embedded.block.json": "json",
105 "meta.embedded.block.jsonc": "jsonc",
106 "meta.embedded.block.latex": "latex",
107 "meta.embedded.block.less": "less",
108 "meta.embedded.block.objc": "objc",
109 "meta.embedded.block.scss": "scss",
110 "meta.embedded.block.perl6": "perl6",
111 "meta.embedded.block.powershell": "powershell",
112 "meta.embedded.block.python": "python",
113 "meta.embedded.block.rust": "rust",
114 "meta.embedded.block.scala": "scala",
115 "meta.embedded.block.shellscript": "shellscript",
116 "meta.embedded.block.typescript": "typescript",
117 "meta.embedded.block.typescriptreact": "typescriptreact",
118 "meta.embedded.block.csharp": "csharp",
119 "meta.embedded.block.fsharp": "fsharp"
120 }
121 }
122 ],
123 "commands": [
124 {
125 "command": "slidev.enable-extension",
126 "category": "Slidev",
127 "title": "Force enable Slidev extension"
128 },
129 {
130 "command": "slidev.disable-extension",
131 "category": "Slidev",
132 "title": "Force disable Slidev extension"
133 },
134 {
135 "command": "slidev.rescan-projects",
136 "category": "Slidev",
137 "title": "Rescan Slidev projects",
138 "icon": "$(refresh)"
139 },
140 {
141 "command": "slidev.choose-entry",
142 "category": "Slidev",
143 "title": "Choose active slides entry"
144 },
145 {
146 "command": "slidev.add-entry",
147 "category": "Slidev",
148 "title": "Add Slidev markdown files as projects",
149 "icon": "$(add)"
150 },
151 {
152 "command": "slidev.remove-entry",
153 "category": "Slidev",
154 "title": "Remove the given entry file from the active slides entries",
155 "icon": "$(close)"
156 },
157 {
158 "command": "slidev.set-as-active",
159 "category": "Slidev",
160 "title": "Set the given entry file as the active one",
161 "icon": "$(eye)"
162 },
163 {
164 "command": "slidev.prev",
165 "category": "Slidev",
166 "title": "Go to previous slide in this Markdown",
167 "icon": "$(chevron-up)"
168 },
169 {
170 "command": "slidev.next",
171 "category": "Slidev",
172 "title": "Go to next slide in this Markdown",
173 "icon": "$(chevron-down)"
174 },
175 {
176 "command": "slidev.refresh-preview",
177 "category": "Slidev",
178 "title": "Refresh preview page",
179 "icon": "$(refresh)"
180 },
181 {
182 "command": "slidev.config-port",
183 "category": "Slidev",
184 "title": "Configure preview port"
185 },
186 {
187 "command": "slidev.start-dev",
188 "category": "Slidev",
189 "title": "Start slidev dev server",
190 "icon": "$(run-all)",
191 "enablement": "slidev:hasActiveProject"
192 },
193 {
194 "command": "slidev.open-in-browser",
195 "category": "Slidev",
196 "title": "Open slides in browser",
197 "icon": "$(globe)"
198 },
199 {
200 "command": "slidev.show-slide-preview",
201 "category": "Slidev",
202 "title": "Switch to slide preview",
203 "icon": "$(preview)",
204 "enablement": "slidev:preview:overview"
205 },
206 {
207 "command": "slidev.show-overview-preview",
208 "category": "Slidev",
209 "title": "Switch to overview preview",
210 "icon": "$(multiple-windows)",
211 "enablement": "!slidev:preview:overview"
212 },
213 {
214 "command": "slidev.preview-prev-click",
215 "category": "Slidev",
216 "title": "Navigate to prev click in preview window",
217 "icon": "$(arrow-left)",
218 "enablement": "slidev:preview:has-prev-click"
219 },
220 {
221 "command": "slidev.preview-next-click",
222 "category": "Slidev",
223 "title": "Navigate to next click in preview window",
224 "icon": "$(arrow-right)",
225 "enablement": "slidev:preview:has-next-click"
226 },
227 {
228 "command": "slidev.preview-prev-slide",
229 "category": "Slidev",
230 "title": "Navigate to prev slide in preview window",
231 "icon": "$(arrow-up)",
232 "enablement": "slidev:preview:has-prev-slide"
233 },
234 {
235 "command": "slidev.preview-next-slide",
236 "category": "Slidev",
237 "title": "Navigate to next slide in preview window",
238 "icon": "$(arrow-down)",
239 "enablement": "slidev:preview:has-next-slide"
240 },
241 {
242 "command": "slidev.enable-preview-sync",
243 "category": "Slidev",
244 "title": "Sync preview window with editor cursor",
245 "icon": "$(unlock)",
246 "enablement": "!slidev:preview:sync"
247 },
248 {
249 "command": "slidev.disable-preview-sync",
250 "category": "Slidev",
251 "title": "Unsync preview window with editor cursor",
252 "icon": "$(lock)",
253 "enablement": "slidev:preview:sync"
254 }
255 ],
256 "menus": {
257 "commandPalette": [
258 {
259 "command": "slidev.remove-entry",
260 "when": "false"
261 },
262 {
263 "command": "slidev.set-as-active",
264 "when": "false"
265 }
266 ],
267 "editor/title": [
268 {
269 "when": "slidev:enabled && slidev:editing-markdown",
270 "command": "slidev.prev",
271 "group": "navigation"
272 },
273 {
274 "when": "slidev:enabled && slidev:editing-markdown",
275 "command": "slidev.next",
276 "group": "navigation"
277 }
278 ],
279 "view/title": [
280 {
281 "command": "slidev.add-entry",
282 "when": "view =~ /slidev-projects-tree/",
283 "group": "navigation@1"
284 },
285 {
286 "command": "slidev.rescan-projects",
287 "when": "view =~ /slidev-projects-tree/",
288 "group": "navigation@2"
289 },
290 {
291 "command": "slidev.preview-prev-slide",
292 "when": "view =~ /slidev-preview/ && slidev:preview:ready && !slidev:preview:compat && !slidev:preview:overview",
293 "group": "navigation@1"
294 },
295 {
296 "command": "slidev.preview-next-slide",
297 "when": "view =~ /slidev-preview/ && slidev:preview:ready && !slidev:preview:compat && !slidev:preview:overview",
298 "group": "navigation@2"
299 },
300 {
301 "command": "slidev.preview-prev-click",
302 "when": "view =~ /slidev-preview/ && slidev:preview:ready && !slidev:preview:compat && !slidev:preview:overview",
303 "group": "navigation@3"
304 },
305 {
306 "command": "slidev.preview-next-click",
307 "when": "view =~ /slidev-preview/ && slidev:preview:ready && !slidev:preview:compat && !slidev:preview:overview",
308 "group": "navigation@4"
309 },
310 {
311 "command": "slidev.start-dev",
312 "when": "view =~ /slidev-preview/ && !slidev:preview:ready",
313 "group": "navigation@5"
314 },
315 {
316 "command": "slidev.open-in-browser",
317 "when": "view =~ /slidev-preview/ && slidev:preview:ready",
318 "group": "navigation@7"
319 },
320 {
321 "command": "slidev.show-slide-preview",
322 "when": "view =~ /slidev-preview/ && slidev:preview:ready && !slidev:preview:compat && slidev:preview:overview",
323 "group": "navigation@8"
324 },
325 {
326 "command": "slidev.show-overview-preview",
327 "when": "view =~ /slidev-preview/ && slidev:preview:ready && !slidev:preview:compat && !slidev:preview:overview",
328 "group": "navigation@8"
329 },
330 {
331 "command": "slidev.refresh-preview",
332 "when": "view =~ /slidev-preview/",
333 "group": "navigation@6"
334 },
335 {
336 "command": "slidev.enable-preview-sync",
337 "when": "view =~ /slidev-preview/ && !slidev:preview:sync",
338 "group": "navigation@5"
339 },
340 {
341 "command": "slidev.disable-preview-sync",
342 "when": "view =~ /slidev-preview/ && slidev:preview:sync",
343 "group": "navigation@5"
344 }
345 ],
346 "view/item/context": [
347 {
348 "command": "slidev.set-as-active",
349 "when": "view == slidev-projects-tree && viewItem =~ /<inactive>/",
350 "group": "inline@1"
351 },
352 {
353 "command": "slidev.remove-entry",
354 "when": "view == slidev-projects-tree && viewItem =~ /<project>/",
355 "group": "inline@2"
356 }
357 ]
358 },
359 "configuration": {
360 "title": "Slidev",
361 "properties": {
362 "slidev.force-enabled": {
363 "type": [
364 "boolean",
365 "null"
366 ],
367 "scope": "window",
368 "description": "Force enable Slidev extension",
369 "default": null
370 },
371 "slidev.port": {
372 "type": "number",
373 "scope": "window",
374 "description": "The default port of Slidev server",
375 "default": 3030
376 },
377 "slidev.annotations": {
378 "type": "boolean",
379 "scope": "window",
380 "description": "Display annotations for slides markdown files",
381 "default": true
382 },
383 "slidev.annotations-line-numbers": {
384 "type": "boolean",
385 "scope": "window",
386 "description": "Display line numbers in code blocks",
387 "default": true
388 },
389 "slidev.preview-sync": {
390 "type": "boolean",
391 "scope": "window",
392 "description": "Sync preview window with editor cursor",
393 "default": true
394 },
395 "slidev.include": {
396 "type": "array",
397 "scope": "window",
398 "description": "Glob patterns to include slides entries",
399 "items": {
400 "type": "string"
401 },
402 "default": [
403 "**/slides.md"
404 ]
405 },
406 "slidev.exclude": {
407 "type": "string",
408 "scope": "window",
409 "description": "A glob pattern to exclude slides entries",
410 "default": "**/node_modules/**"
411 },
412 "slidev.dev-command": {
413 "type": "string",
414 "scope": "window",
415 "description": "The command to start Slidev dev server. See https://sli.dev/features/vscode-extension#dev-command",
416 "default": "npm exec -c 'slidev ${args}'"
417 }
418 }
419 },
420 "viewsContainers": {
421 "activitybar": [
422 {
423 "id": "slidev",
424 "title": "Slidev",
425 "icon": "dist/res/logo-mono.svg"
426 }
427 ]
428 },
429 "views": {
430 "slidev": [
431 {
432 "id": "slidev-projects-tree",
433 "name": "Projects",
434 "visibility": "collapsed",
435 "initialSize": 1,
436 "when": "slidev:enabled && (!slidev:preview:overview || !slidev:preview:ready)"
437 },
438 {
439 "id": "slidev-slides-tree",
440 "name": "Slides",
441 "visibility": "visible",
442 "initialSize": 3,
443 "when": "slidev:enabled && (!slidev:preview:overview || !slidev:preview:ready)"
444 },
445 {
446 "type": "webview",
447 "id": "slidev-preview",
448 "name": "Preview",
449 "visibility": "visible",
450 "initialSize": 3,
451 "when": "slidev:enabled"
452 }
453 ]
454 },
455 "viewsWelcome": [
456 {
457 "view": "slidev-slides-tree",
458 "contents": "No active slides entry.\n[Choose one](command:slidev.choose-entry)"
459 }
460 ],
461 "languageModelTools": [
462 {
463 "name": "slidev_getActiveSlide",
464 "tags": [
465 "slidev"
466 ],
467 "toolReferenceName": "getActiveSlide",
468 "displayName": "Get Active Slide",
469 "modelDescription": "Get the information of the active slide the user is currently focused on in a Slidev presentation.",
470 "userDescription": "Get the information of the active slide in a Slidev presentation.",
471 "canBeReferencedInPrompt": true,
472 "icon": "$(debug-stackframe-active)",
473 "inputSchema": {
474 "type": "object",
475 "properties": {}
476 }
477 },
478 {
479 "name": "slidev_getSlideContent",
480 "tags": [
481 "slidev"
482 ],
483 "toolReferenceName": "getSlideContent",
484 "displayName": "Get Slide Content",
485 "modelDescription": "Get the content of a specific slide in a Slidev presentation by providing the slide number.",
486 "userDescription": "Get the content of a specific slide in a Slidev presentation by providing the slide number.",
487 "canBeReferencedInPrompt": true,
488 "icon": "$(file-code)",
489 "inputSchema": {
490 "type": "object",
491 "properties": {
492 "entrySlidePath": {
493 "type": "string",
494 "description": "The path to the Slidev entry file (e.g., `./slides.md`). Empty string means the active slide entry.",
495 "default": "$ACTIVE_SLIDE_ENTRY"
496 },
497 "slideNo": {
498 "type": "number",
499 "description": "The slide number to retrieve content from. Starts from 1. Hidden slides are not counted."
500 }
501 }
502 }
503 },
504 {
505 "name": "slidev_getAllSlideTitles",
506 "tags": [
507 "slidev"
508 ],
509 "toolReferenceName": "getAllSlideTitles",
510 "displayName": "Get All Slide Titles",
511 "modelDescription": "Get the list of all slide titles in the specified Slidev project.",
512 "userDescription": "Get the list of all slide titles in the specified Slidev project.",
513 "canBeReferencedInPrompt": true,
514 "icon": "$(list-unordered)",
515 "inputSchema": {
516 "type": "object",
517 "properties": {
518 "entrySlidePath": {
519 "type": "string",
520 "description": "The path to the Slidev entry file (e.g., ./slides.md). Empty string means the active slide entry.",
521 "default": "$ACTIVE_SLIDE_ENTRY"
522 }
523 }
524 }
525 },
526 {
527 "name": "slidev_findSlideNoByTitle",
528 "tags": [
529 "slidev"
530 ],
531 "toolReferenceName": "findSlideNoByTitle",
532 "displayName": "Find Slide Number by Title",
533 "modelDescription": "Find the slide number in the specified Slidev project by its title.",
534 "userDescription": "Find the slide number in the specified Slidev project by its title.",
535 "canBeReferencedInPrompt": true,
536 "icon": "$(search)",
537 "inputSchema": {
538 "type": "object",
539 "properties": {
540 "entrySlidePath": {
541 "type": "string",
542 "description": "The path to the Slidev entry file (e.g., ./slides.md). Empty string means the active slide entry.",
543 "default": "$ACTIVE_SLIDE_ENTRY"
544 },
545 "title": {
546 "type": "string",
547 "description": "The title of the slide to search for."
548 }
549 }
550 }
551 },
552 {
553 "name": "slidev_listEntries",
554 "tags": [
555 "slidev"
556 ],
557 "toolReferenceName": "listEntries",
558 "displayName": "List All Loaded Slidev Entries",
559 "modelDescription": "Get all loaded Slidev project entry file paths.",
560 "userDescription": "Get all loaded Slidev project entry file paths.",
561 "canBeReferencedInPrompt": true,
562 "icon": "$(file-directory)",
563 "inputSchema": {
564 "type": "object",
565 "properties": {}
566 }
567 },
568 {
569 "name": "slidev_getPreviewPort",
570 "tags": [
571 "slidev"
572 ],
573 "toolReferenceName": "getPreviewPort",
574 "displayName": "Get Project Preview Port",
575 "modelDescription": "Get the preview port number of the specified Slidev project.",
576 "userDescription": "Get the preview port number of the specified Slidev project.",
577 "canBeReferencedInPrompt": true,
578 "icon": "$(plug)",
579 "inputSchema": {
580 "type": "object",
581 "properties": {
582 "entrySlidePath": {
583 "type": "string",
584 "description": "The path to the Slidev entry file (e.g., ./slides.md). Empty string means the active slide entry.",
585 "default": "$ACTIVE_SLIDE_ENTRY"
586 }
587 }
588 }
589 },
590 {
591 "name": "slidev_chooseEntry",
592 "tags": [
593 "slidev"
594 ],
595 "toolReferenceName": "chooseEntry",
596 "displayName": "Choose Active Slidev Entry",
597 "modelDescription": "Switch the active Slidev project entry to the specified entry file path.",
598 "userDescription": "Switch the active Slidev project entry to the specified entry file path.",
599 "canBeReferencedInPrompt": true,
600 "icon": "$(arrow-swap)",
601 "inputSchema": {
602 "type": "object",
603 "properties": {
604 "entrySlidePath": {
605 "type": "string",
606 "description": "The path to the Slidev entry file to activate (e.g., ./slides.md).",
607 "default": ""
608 }
609 },
610 "required": [
611 "entrySlidePath"
612 ]
613 }
614 }
615 ]
616 },
617 "scripts": {
618 "publish": "tsx scripts/publish.ts",
619 "pack": "vsce package --no-dependencies",
620 "prepare": "tsx scripts/schema.ts",
621 "build": "tsdown --env.NODE_ENV production --treeshake --minify",
622 "dev": "nr prepare && tsdown --watch ./src --watch ./language-server --env.NODE_ENV development",
623 "vscode:prepublish": "nr build"
624 },
625 "devDependencies": {
626 "@antfu/utils": "catalog:frontend",
627 "@slidev/parser": "workspace:*",
628 "@slidev/types": "workspace:*",
629 "@types/node": "catalog:types",
630 "@types/vscode": "^1.99.0",
631 "@volar/language-server": "catalog:vscode",
632 "@volar/vscode": "catalog:vscode",
633 "get-port-please": "catalog:prod",
634 "mlly": "catalog:prod",
635 "ovsx": "catalog:dev",
636 "pathe": "catalog:prod",
637 "picomatch": "catalog:vscode",
638 "prettier": "catalog:vscode",
639 "reactive-vscode": "catalog:vscode",
640 "tm-grammars": "catalog:frontend",
641 "ts-json-schema-generator": "catalog:vscode",
642 "volar-service-prettier": "catalog:vscode",
643 "volar-service-yaml": "catalog:vscode",
644 "vscode-uri": "catalog:vscode",
645 "yaml-language-server": "catalog:vscode"
646 }
647 }
648
648 lines JSON