diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e7928537c1..34f325a278 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,7 +8,7 @@ jobs: strategy: matrix: - node-version: [16] + node-version: [18] os: [macos-latest, windows-latest, ubuntu-latest] steps: diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000000..30ab299dd9 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +link-workspace-packages=true diff --git a/.vscode/launch.json b/.vscode/launch.json index dc2247ae31..ce8dc5a2ec 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -12,8 +12,7 @@ "--extensionDevelopmentPath=${workspaceRoot}/extensions/vscode" ], "outFiles": [ - "${workspaceRoot}/*/*/*.js", - "${workspaceRoot}/*/*/lib/**/*.js" + "${workspaceRoot}/**/*.js" ], "preLaunchTask": { "type": "npm", @@ -31,8 +30,7 @@ "--extensionDevelopmentKind=web" ], "outFiles": [ - "${workspaceRoot}/*/*/*.js", - "${workspaceRoot}/*/*/lib/**/*.js" + "${workspaceRoot}/**/*.js" ], "preLaunchTask": { "type": "npm", @@ -46,8 +44,7 @@ "port": 6009, "restart": true, "outFiles": [ - "${workspaceRoot}/*/*/*.js", - "${workspaceRoot}/*/*/lib/**/*.js" + "${workspaceRoot}/**/*.js" ] } ], diff --git a/CHANGELOG.md b/CHANGELOG.md index b51c6eb8fe..66da1649c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,273 @@ # Changelog +## 2.1.0-insiders.7 (2024/4/30) + +Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.7), [爱发电电圈](https://afdian.net/p/84db515c069b11ef9eaf52540025c377) + +> [Join the Insiders Program](https://github.com/vuejs/language-tools/wiki/Get-Insiders-Edition) for more exclusive features and updates. + +### Other Changes + +- Merged [v2.0.15](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md#2015-2024430). + +## 2.0.15 (2024/4/30) + +### Features + +- Redesign additional extensions, VitePress, PetiteVue support (#4321) + - Fix custom file extensions not working in Hybrid Mode (#4251) +- **vscode:** prompt when Hybrid Mode is explicitly enabled but known incompatible extensions are installed +- **language-core:** use internal options for directly exposing user props/emits types ([vuejs/core#10801](https://github.com/vuejs/core/pull/10801)) +- **language-core:** support defineSlots destructuring (#4312) - Thanks @zhiyuanzmj + +### Bug Fixes + +- **vscode:** when enabled VitePress support, extension not activated when opening markdown files +- **language-core:** auto-complete not working in v-bind + +### Performance + +- **language-service:** emmet completion should not be blocked by TS type evaluation (#4298) +- **language-core:** simplify virtual code for intrinsic elements + +### Other Changes + +- Upgrade Volar from `v2.2.0-alpha.10` to `v2.2.0-alpha.12`: + - Avoid extension crash when workspace TSDK does not exist + - Fix template variables cannot be renamed at the first character in Hybrid Mode (#4297) + - Fix template virtual code mapping is misaligned in Windows in Hybrid Mode (#4297) +- Add `svelte.svelte-vscode` (>=108.4.0) to Hybrid Mode compatibility whitelist ([sveltejs/language-tools#2317](https://github.com/sveltejs/language-tools/pull/2317)) +- **component-meta:** convert source code to TS +- **language-core:** export `allCodeFeatures` (#4320) - Thanks @zhiyuanzmj + +## 2.1.0-insiders.6 (2024/4/25) + +Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.6), [爱发电电圈](https://afdian.net/p/f73a772602ab11efa33652540025c377) + +> [Join the Insiders Program](https://github.com/vuejs/language-tools/wiki/Get-Insiders-Edition) for more exclusive features and updates. + +### Features + +- Check for Insiders version updates on startup +- Support reactions visualization for TS document + +### Bug Fixes + +- Fixed some incorrect situations in reactions analysis + +### Other Changes + +- Merged [v2.0.14...a69909e81](https://github.com/vuejs/language-tools/compare/v2.0.14...a69909e81). + +## 2.1.0-insiders.5 (2024/4/22) + +Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.5), [爱发电电圈](https://afdian.net/p/25aca47c004e11ef8b445254001e7c00) + +> [Join the Insiders Program](https://github.com/vuejs/language-tools/wiki/Get-Insiders-Edition) for more exclusive features and updates. + +### Other Changes + +- Merged [v2.0.14](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md#2014-2024422). + +## 2.0.14 (2024/4/22) + +### Features + +- **language-core:** added search html tag (#4280) - Thanks @audunhov +- **language-service:** added Russian, Czech localization support + +### Bug Fixes + +- **language-core:** `@ts-ignore` not working for slots (#4263) +- **language-core:** reduce unnecessary props mapping (#4284) +- **tsc:** improve regexp performance for global type removal (#4260) - Thanks @blake-newman + +### Other Changes + +- Upgrade Volar from `v2.2.0-alpha.8` to `v2.2.0-alpha.10` to fix some issues: + - Parameter Hints not working in Hybrid Mode (#3948) + - TS server to crash repeatedly when include large js file (#4278) + - Randomly causing errors when renaming / find definitions in Hybrid Mode (#4257, #4281, #4282) + - Unable to resolve Nuxt UI component type + - Incomplete results for find refernces in Hybrid Mode +- The following extensions have been added to Hybrid Mode’s compatibility whitelist: + - `bierner.lit-html` + - `denoland.vscode-deno` (When `deno.enable` is `false`) + - `jenkey2011.string-highlight` +- **language-core:** improve maintainability of codegen (#4276) + - Deprecated `vueCompilerOptions.nativeTags`, now respects the `nodeType` property of template AST node. + - Dynamic component types without `v-bind:is` are no longer supported. + +## 2.0.13 (2024/4/12) + +### Performance + +- **tsc:** re-introduce global types removal check (#4245) + +### Other Changes + +- Upgrade Volar from `v2.2.0-alpha.7` to `v2.2.0-alpha.8` for a vue-tsc performance issue fixes (#4238) + +## 2.1.0-insiders.4 (2024/4/10) + +Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.4), [爱发电电圈](https://afdian.net/p/46a5f4a8f72011ee97fe52540025c377) + +> [Join the Insiders Program](https://github.com/vuejs/language-tools/wiki/Get-Insiders-Edition) for more exclusive features and updates. + +### Other Changes + +- Merged [v2.0.12](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md#2012-2024410). + +## 2.0.12 (2024/4/10) + +### Bug Fixes + +- **vscode:** restart tsserver before restart vue language server (#4242) +- **tsc:** remove exit early condition +- **typescript-plugin:** handle named pipe server timeout +- **language-core:** `@vue-ignore` not working for fragment v-if/v-for nodes (#4232) + +### Other Changes + +- Upgrade Volar from `v2.2.0-alpha.6` to `v2.2.0-alpha.7` for a typescript plugin bug fixes + +## 2.1.0-insiders.3 (2024/4/7) + +Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.3), [爱发电电圈](https://afdian.net/p/5bf99cfaf4ec11ee9e1f5254001e7c00) + +> [Join the Insiders Program](https://github.com/vuejs/language-tools/wiki/Get-Insiders-Edition) for more exclusive features and updates. + +### Features + +- **vscode:** add `vue.editor.reactionsVisualization` setting ([#8](https://github.com/volarjs/insiders/pull/8)) + +### Other Changes + +- Merged [v2.0.11](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md#2011-202447). + +## 2.0.11 (2024/4/7) + +### Features + +- **vscode:** support for enabling/disabling typescript plugin (#4226) + - Added `typeScriptPluginOnly` option for `vue.server.hybridMode` setting. + - When Hybrid Mode is disabled, the Vue TypeScript Plugin will be disabled by default. +- **vscode:** support for `vue.format.wrapAttributes` setting (#4212) +- **vscode:** add `vue.codeActions.askNewComponentName` setting (#4217) + +### Bug Fixes + +- **vscode:** `Find File References` not working when hybrid mode is disabled (#4221) +- **language-core:** type narrowing not working for inline event handlers (#4209) +- **language-core:** `@vue-ignore`, `@vue-expect-error` not working for interpolations +- **language-core:** improve reliability for `@vue-ignore`, `@vue-expect-error` (#4203) +- **language-core:** duplicated items in suggestion list for prop values (#3922) +- **language-server:** `vueCompilerOptions` not working with hybrid mode (#4211) (#3959) + +### Other Changes + +- Upgrade Volar from `v2.2.0-alpha.5` to `v2.2.0-alpha.6` for a `vue-tsc` bug fixes + - [volarjs/volar.js#162](https://github.com/volarjs/volar.js/pull/162) - Thanks @wangshunnn +- **test:** add test for #4203 (#4207) - Thanks @tinco + +## 2.1.0-insiders.2 (2024/4/4) + +Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.2), [爱发电电圈](https://afdian.net/p/d59d0dd8f29611ee88945254001e7c00) + +> [Join the Insiders Program](https://github.com/vuejs/language-tools/wiki/Get-Insiders-Edition) for more exclusive features and updates. + +### Features + +- **language-server:** improve reactions analyze ([volarjs/insiders#8](https://github.com/volarjs/insiders/pull/8)) + +### Other Changes + +- Merged [v2.0.10](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md#2010-202444). + +## 2.0.10 (2024/4/4) + +### Features + +- **vscode:** enable `vue.updateImportsOnFileMove.enabled` by default (#3646) +- **vscode:** re-add restart server command (#4174) +- **vscode:** automatically enable Hybrid Mode if possible (#4206) +- **component-meta:** add typing resolution for defineModel modifiers (#4175) - Thanks @stafyniaksacha +- **language-service:** drag and drop import respects tsconfig path aliases (#4184) +- **language-service:** supports auto insertion of multiple cursors (#4140) + +### Bug Fixes + +- **language-server:** `additionalExtensions` option not working for inferred project +- **language-core:** avoid interpolation indentation affecting each other +- **language-core:** generate each interpolation into separate virtual code (#4165) +- **language-service:** ignore html `wrapAttributes` format settings for vue document (#3987) +- **vscode:** remove duplicate ts version status (#4167) +- **language-server:** `.html`, `.md` file language id incorrect +- **typescript-plugin:** formatting settings not working for ts completion +- **tsc:** remove fake global types holder for composite projects compatibility (#4196) - Thanks @blake-newman + +### Performance + +- **language-core:** cache canonical root file names with string Set + +### Other Changes + +- Upgrade Volar from `v2.1.3` to `v2.2.0-alpha.5` for a few bug fixes and performance improves, please refer to [CHANGELOG.md](https://github.com/volarjs/volar.js/blob/master/CHANGELOG.md) for details. +- **vscode:** update required VSCode version to `^1.88.0` +- **docs:** update readme with neovim lspconfig setup (#4134) - Thanks @RayGuo-ergou +- **language-core:** split inline css codegen into separate plugin +- **language-core:** move global types codegen into separate script +- **language-core:** resolve virtual code features before push code +- **test:** added simple tests for vue-tsc and custom SFC extensions. (#4181) - Thanks @cabal95 + +## 2.1.0-insiders.1 + +> [Join the Insiders Program](https://github.com/vuejs/language-tools/wiki/Get-Insiders-Edition) for more exclusive features and updates. + +Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.1), [爱发电电圈](https://afdian.net/p/ba0901a2edce11ee8f2e52540025c377) + +### Features + +#### Reactions visualization (PR: https://github.com/volarjs/insiders/pull/5) + +![](https://github.com/vuejs/language-tools/assets/16279759/b90d3d05-f98c-42a0-b011-448af00a0c06) + +#### Template interpolation decorators (PR: https://github.com/volarjs/insiders/pull/4) + +> To disable this feature, uncheck `vue.editor.templateInterpolationDecorators` in VSCode settings. + +![](https://github.com/vuejs/language-tools/assets/16279759/fc591552-834e-4fbb-ab47-1740f6f8a151) + +### Other Changes + +- Merged https://github.com/vuejs/language-tools/commit/1b9946c02ee3f5bb8c2de17c430985756115e51c + +## 2.0.7 (2024/3/20) + +> [!NOTE] +> Hybrid Mode is now disabled by default, you need to enable `vue.server.hybridMode` in settings to enable it explicitly. + +### Features + +- **language-server:** reintroducing full TS support and disable Hybrid Mode by default (#4119) +- **vscode:** check outdated `@vue/language-plugin-pug` in doctor +- **vscode:** significantly reduces the status bar space occupied + +### Bug Fixes + +- **vscode:** vueCompilerOptions no longer prompts for deprecated options +- **component-meta:** `defineSlots` allows empty params (#4093) - thanks @Evertvdw +- **typescript-plugin:** fault tolerance for named pipe servers json file (#4075) - thanks @Simon-He95 +- **language-core:** generate `defineModel` emits type on-demand (#4052) - thanks @so1ve +- **language-core:** special treatment for number elements inside `v-for` (#3859) - thanks @so1ve +- **language-plugin-pug:** semantic tokens mapping failed (#4070) + +### Other Changes + +- **language-service** update neovim lsp set up info (#4085) - thanks @CofCat456 +- **lint:** add `tsl` linter and auto fix workflow (#4100) +- **vscode:** remove embedded language IDs (#4081) - thanks @remcohaszing + ## 2.0.6 (2024/3/7) > [!IMPORTANT] @@ -17,7 +285,7 @@ - **language-service:** bump `volar-service-typescript` for fix jsx formatting (#3949) - **language-service:** bump `@volar/typescript` for fix 2.0.5 auto-complete performance regression (#4024) -### Refactors +### Other Changes - **vscode:** rename `vue.inlayHints.vbindShorthand` setting to `vue.inlayHints.vBindShorthand` (#3995) - thanks @l4dybird @@ -38,7 +306,7 @@ - **typescript-plugin:** custom extensions do not work (#3977) - **language-service:** html custom data not working (#3975) -### Refactors +### Other Changes - **typescript-plugin** add README (#3974) - thanks @WhyNotHugo - **component-meta** update demo (#3994) - thanks @zzfn diff --git a/README.md b/README.md index 3657393736..12d55b132c 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,89 @@ *Vue language client for coc.nvim* [neovim/nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) ⚡ 🤝 \ -*Vue language server configuration for Neovim* \ -[[Volar 2.0 version set up tutorial](https://github.com/vuejs/language-tools/issues/3925)] +*Vue language server configuration for Neovim* + +
+ How to configure vue language server with neovim and lsp? + +### Hybrid mode configuration (Requires `@vue/language-server` version `^2.0.0`) + +Note: The "Take Over" mode has been discontinued. Instead, a new "Hybrid" mode has been introduced. In this mode, the Vue Language Server exclusively manages the CSS/HTML sections. As a result, you must run `@vue/language-server` in conjunction with a TypeScript server that employs `@vue/typescript-plugin`. Below is a streamlined configuration for Neovim's LSP, updated to accommodate the language server following the upgrade to version `2.0.0`. + +```lua +-- If you are using mason.nvim, you can get the ts_plugin_path like this +-- local mason_registry = require('mason-registry') +-- local vue_language_server_path = mason_registry.get_package('vue-language-server'):get_install_path() .. '/node_modules/@vue/language-server' + +local vue_language_server_path = '/path/to/@vue/language-server' + +local lspconfig = require('lspconfig') + +lspconfig.tsserver.setup { + init_options = { + plugins = { + { + name = '@vue/typescript-plugin', + location = vue_language_server_path, + languages = { 'vue' }, + }, + }, + }, + filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' }, +} + +-- No need to set `hybridMode` to `true` as it's the default value +lspconfig.volar.setup {} +``` + +### None-Hybrid mode(similar to takeover mode) configuration (Requires `@vue/language-server` version `^2.0.7`) + +Note: If `hybridMode` is set to `false` `Volar` will run embedded `tsserver` therefore there is no need to run it separately. + +For more information see [#4119](https://github.com/vuejs/language-tools/pull/4119) + +*Make sure you have typescript installed globally or pass the location to volar* + +Use volar for all `.{vue,js,ts,tsx,jsx}` files. +```lua +local lspconfig = require('lspconfig') + +-- lspconfig.tsserver.setup {} +lspconfig.volar.setup { + filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' }, + init_options = { + vue = { + hybridMode = false, + }, + }, +} +``` + +Use `volar` for only `.vue` files and `tsserver` for `.ts` and `.js` files. +```lua +local lspconfig = require('lspconfig') + +lspconfig.tsserver.setup { + init_options = { + plugins = { + { + name = '@vue/typescript-plugin', + location = '/path/to/@vue/language-server', + languages = { 'vue' }, + }, + }, + }, + +lspconfig.volar.setup { + init_options = { + vue = { + hybridMode = false, + }, + }, +}, +``` + +
[mattn/vim-lsp-settings](https://github.com/mattn/vim-lsp-settings) ⚡ \ *Vue language server auto configuration for vim-lsp* diff --git a/extensions/vscode/README.md b/extensions/vscode/README.md index 468583a7b2..a9fbde6a94 100644 --- a/extensions/vscode/README.md +++ b/extensions/vscode/README.md @@ -1,21 +1,18 @@ -# Vue Language Features - -> ⚡ Fast Vue Language Support Extension - -[Plugin's page on Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=Vue.volar) - -Vue Language Features is a language support extension built for Vue, Vitepress and petite-vue. this is based on [`@vue/reactivity`](https://www.npmjs.com/package/@vue/reactivity) to calculate everything on-demand, to implement native TypeScript language service level performance. - -[[Tips](https://github.com/vuejs/language-tools/issues/53)] +# Vue - Official ## Quick Start - [create-vue](https://github.com/vuejs/create-vue) - [Vitesse](https://github.com/antfu/vitesse) - [petite](https://github.com/JessicaSachs/petite) - - [volar-starter](https://github.com/johnsoncodehk/volar-starter) (For bug report and experiment features testing) +## Insiders Program 🚀 + +This project is community-driven. If you would like to support this project, consider joining the [Insiders Program](https://github.com/vuejs/language-tools/wiki/Get-Insiders-Edition) to improve the sustainability of this project and unlock more features. + + + +## Sponsors + + + +

+ + + +

+ +

+ Become a sponsor +

+ ## Credits - [vscode-extension-samples](https://github.com/microsoft/vscode-extension-samples) shows all the knowledge required to develop the extension. @@ -187,24 +259,3 @@ Finally you need to make VS Code recognize your new extension and automatically - [vscode-css-languageservice](https://github.com/microsoft/vscode-css-languageservice): css, less, scss, postcss - [pug-beautify](https://github.com/vingorius/pug-beautify): pug - [typescript](https://github.com/microsoft/TypeScript): js, ts, jsx, tsx - ---- - -

Full-time Support by

-
- -

- - - -

Boot a fresh environment in milliseconds.

- - -

-
- -

- - - -

diff --git a/extensions/vscode/package.json b/extensions/vscode/package.json index 330fd59795..04be6d9bb5 100644 --- a/extensions/vscode/package.json +++ b/extensions/vscode/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "volar", - "version": "2.0.6", + "version": "2.0.15", "repository": { "type": "git", "url": "https://github.com/vuejs/language-tools.git", @@ -19,7 +19,7 @@ "author": "johnsoncodehk", "publisher": "Vue", "engines": { - "vscode": "^1.82.0" + "vscode": "^1.88.0" }, "activationEvents": [ "onLanguage:vue", @@ -90,10 +90,7 @@ { "name": "typescript-vue-plugin-bundle", "enableForWorkspaceTypeScriptVersions": true, - "configNamespace": "typescript", - "languages": [ - "vue" - ] + "configNamespace": "typescript" } ], "grammars": [ @@ -221,35 +218,35 @@ }, "vue.server.hybridMode": { "type": "boolean", - "default": false, + "default": "auto", + "enum": [ + "auto", + "typeScriptPluginOnly", + true, + false + ], + "enumDescriptions": [ + "Automatically detect and enable TypeScript Plugin/Hybrid Mode in a safe environment.", + "Only enable Vue TypeScript Plugin but disable Hybrid Mode.", + "Enable TypeScript Plugin/Hybrid Mode.", + "Disable TypeScript Plugin/Hybrid Mode." + ], "description": "Vue language server only handles CSS and HTML language support, and tsserver takes over TS language support via TS plugin." }, + "vue.server.includeLanguages": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "vue" + ] + }, "vue.server.maxFileSize": { "type": "number", "default": 20971520, "description": "Maximum file size for Vue Language Server to load. (default: 20MB)" }, - "vue.server.petiteVue.supportHtmlFile": { - "type": "boolean", - "default": false - }, - "vue.server.vitePress.supportMdFile": { - "type": "boolean", - "default": false - }, - "vue.server.diagnosticModel": { - "type": "string", - "default": "push", - "enum": [ - "push", - "pull" - ], - "enumDescriptions": [ - "Diagnostic push by language server.", - "Diagnostic pull by language client." - ], - "description": "Diagnostic update model." - }, "vue.server.maxOldSpaceSize": { "type": [ "number", @@ -258,14 +255,6 @@ "default": null, "description": "Set --max-old-space-size option on server process. If you have problem on frequently \"Request textDocument/** failed.\" error, try setting higher memory(MB) on it." }, - "vue.server.additionalExtensions": { - "type": "array", - "items": { - "type": "string" - }, - "default": [], - "description": "List any additional file extensions that should be processed as Vue files (requires restart)." - }, "vue.doctor.status": { "type": "boolean", "default": true, @@ -278,6 +267,9 @@ }, "vue.splitEditors.layout.left": { "type": "array", + "items": { + "type": "string" + }, "default": [ "script", "scriptSetup", @@ -286,6 +278,9 @@ }, "vue.splitEditors.layout.right": { "type": "array", + "items": { + "type": "string" + }, "default": [ "template", "customBlocks" @@ -293,7 +288,7 @@ }, "vue.updateImportsOnFileMove.enabled": { "type": "boolean", - "default": false, + "default": true, "description": "Enabled update imports on file move." }, "vue.codeActions.enabled": { @@ -301,6 +296,11 @@ "default": true, "description": "Enabled code actions." }, + "vue.codeActions.askNewComponentName": { + "type": "boolean", + "default": true, + "description": "Ask for new component name when extract component." + }, "vue.codeLens.enabled": { "type": "boolean", "default": true, @@ -386,10 +386,28 @@ "vue.format.script.initialIndent": { "type": "boolean", "default": false + }, + "vue.format.wrapAttributes": { + "type": "string", + "default": "auto", + "enum": [ + "auto", + "force", + "force-aligned", + "force-expand-multiline", + "aligned-multiple", + "preserve", + "preserve-aligned" + ] } } }, "commands": [ + { + "command": "vue.action.restartServer", + "title": "Restart Vue and TS servers", + "category": "Vue" + }, { "command": "vue.action.doctor", "title": "Doctor", @@ -405,37 +423,47 @@ "title": "Split \n```\n\nPozor na to, že pro importy pomocí `src` platí stejná pravidla pro zadávání cest jako pro požadavky na webpack moduly, což znamená:\n\n- Relativní cesty musí začínat s `./`\n- Můžete importovat zdroje z npm závislostí:\n\n```vue\n\n\n```\n\nDejte pozor, že integrace s různými pre-procesory se může lišit podle zvolené sady softwarových nástrojů. Pro příklady se podívejte do příslušné dokumentace:\n\n- [Vite](https://vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + "values": [ + { + "name": "html" + }, + { + "name": "pug" + } + ], + "references": [ + { + "name": "en", + "url": "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + "name": "zh-cn", + "url": "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + "name": "ja", + "url": "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + "name": "ua", + "url": "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + "name": "fr", + "url": "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + "name": "ko", + "url": "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + "name": "pt", + "url": "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + "name": "bn", + "url": "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + "name": "it", + "url": "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + "name": "cs", + "url": "https://cs.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + "name": "ru", + "url": "https://ru.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + "name": "fa", + "url": "https://fa.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + } + ], + "description": { + "kind": "markdown", + "value": "\n- Každý soubor `*.vue` může obsahovat maximálně jeden blok `