diff --git a/eslint.config.js b/eslint.config.js index ce935c58b1..ab2dd39b78 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -20,10 +20,13 @@ export default antfu({ 'vue/no-v-text-v-html-on-component', 'vue/component-name-in-template-casing', 'jsonc/sort-array-values', + 'pnpm/yaml-no-duplicate-catalog-item', ) .override('antfu/pnpm/package-json', { ignores: [ 'packages/create-theme/template/package.json', 'packages/create-app/template/package.json', + // VSCE and OVSX do not support pnpm catalog when reading `@types/vscode`'s version. + 'packages/vscode/package.json', ], }) diff --git a/package.json b/package.json index c1c8e14d6e..b410550eae 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "lint-staged": "catalog:dev", "mermaid": "catalog:frontend", "playwright-chromium": "catalog:dev", - "prettier": "catalog:frontend", + "prettier": "catalog:dev", "prettier-plugin-slidev": "catalog:dev", "rimraf": "catalog:dev", "shiki": "catalog:frontend", diff --git a/packages/client/package.json b/packages/client/package.json index fb9300bdf5..27cca821b1 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -54,7 +54,6 @@ "monaco-editor": "catalog:monaco", "nanotar": "catalog:frontend", "pptxgenjs": "catalog:prod", - "prettier": "catalog:frontend", "recordrtc": "catalog:frontend", "shiki": "catalog:frontend", "shiki-magic-move": "catalog:frontend", diff --git a/packages/slidev/node/vite/extendConfig.ts b/packages/slidev/node/vite/extendConfig.ts index 848476af85..68d81a2455 100644 --- a/packages/slidev/node/vite/extendConfig.ts +++ b/packages/slidev/node/vite/extendConfig.ts @@ -11,7 +11,6 @@ const INCLUDE_GLOBAL = [ '@typescript/ata', 'file-saver', 'lz-string', - 'prettier', 'recordrtc', 'typescript', 'yaml', diff --git a/packages/vscode/.vscodeignore b/packages/vscode/.vscodeignore index 612dfb9158..bd104b8c05 100644 --- a/packages/vscode/.vscodeignore +++ b/packages/vscode/.vscodeignore @@ -5,4 +5,8 @@ language-server/** scripts/** src/** tsdown.config.ts -*.map +**/*.map +syntaxes/codeblock-patch.ts +syntaxes/slidev.example.md +syntaxes/tsconfig.json +syntaxes/.vscode diff --git a/packages/vscode/language-server/import-meta-url.ts b/packages/vscode/language-server/import-meta-url.ts deleted file mode 100644 index 18d9319126..0000000000 --- a/packages/vscode/language-server/import-meta-url.ts +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line no-var, ts/no-require-imports, import/no-mutable-exports -export var import_meta_url = require('node:url').pathToFileURL(__filename) diff --git a/packages/vscode/package.json b/packages/vscode/package.json index 2169da2867..abcda4f80c 100644 --- a/packages/vscode/package.json +++ b/packages/vscode/package.json @@ -18,7 +18,7 @@ "main": "./dist/index.cjs", "icon": "dist/res/logo.png", "engines": { - "vscode": "^1.89.0" + "vscode": "^1.101.0" }, "activationEvents": [ "onStartupFinished" @@ -449,13 +449,13 @@ "@slidev/parser": "workspace:*", "@slidev/types": "workspace:*", "@types/node": "catalog:types", - "@types/vscode": "catalog:types", + "@types/vscode": "^1.101.0", "@volar/language-server": "catalog:vscode", "@volar/vscode": "catalog:vscode", "get-port-please": "catalog:prod", "mlly": "catalog:prod", "ovsx": "catalog:dev", - "prettier": "catalog:frontend", + "prettier": "catalog:vscode", "reactive-vscode": "catalog:vscode", "tm-grammars": "catalog:frontend", "ts-json-schema-generator": "catalog:vscode", diff --git a/packages/vscode/scripts/publish.ts b/packages/vscode/scripts/publish.ts index 706b5b6ef1..c4b464fa8a 100644 --- a/packages/vscode/scripts/publish.ts +++ b/packages/vscode/scripts/publish.ts @@ -1,3 +1,4 @@ +import type { Options } from 'tinyexec' import fs from 'node:fs/promises' import process from 'node:process' import { x } from 'tinyexec' @@ -23,11 +24,19 @@ async function publish() { console.log('Publishing VS Code extension...') - await x('npm', ['run', 'build'], { nodeOptions: { cwd: root, stdio: 'inherit' } }) + const options: Partial = { + nodeOptions: { + cwd: root, + stdio: 'inherit', + }, + throwOnError: true, + } + + await x('npm', ['run', 'build'], options) console.log('\nPublish to VSCE...\n') - await x('npx', ['@vscode/vsce', 'publish', '--no-dependencies', '-p', process.env.VSCE_TOKEN!], { nodeOptions: { cwd: root, stdio: 'inherit' } }) + await x('npx', ['@vscode/vsce', 'publish', '--no-dependencies', '-p', process.env.VSCE_TOKEN!], options) console.log('\nPublish to OVSE...\n') - await x('npx', ['ovsx', 'publish', '--no-dependencies', '-p', process.env.OVSX_TOKEN!], { nodeOptions: { cwd: root, stdio: 'inherit' } }) + await x('npx', ['ovsx', 'publish', '--no-dependencies', '-p', process.env.OVSX_TOKEN!], options) } publish() diff --git a/packages/vscode/tsdown.config.ts b/packages/vscode/tsdown.config.ts index 86c63ac057..b907b9c975 100644 --- a/packages/vscode/tsdown.config.ts +++ b/packages/vscode/tsdown.config.ts @@ -7,40 +7,40 @@ import { defineConfig } from 'tsdown' import { generateCodeblockPatch } from './syntaxes/codeblock-patch.ts' export default defineConfig({ - // @ts-expect-error `entry` is valid option entry: { 'index': 'src/index.ts', 'language-server': 'language-server/bin.ts', }, format: 'cjs', - target: 'node18', + target: 'node20', clean: true, minify: process.env.NODE_ENV === 'production', sourcemap: true, external: [ 'vscode', ], - shims: ['./language-server/import-meta-url.ts'], - define: { - 'import.meta.url': 'import_meta_url', - }, alias: { '@slidev/parser/fs': fileURLToPath(new URL('../parser/src/fs.ts', import.meta.url)), '@slidev/parser/core': fileURLToPath(new URL('../parser/src/core.ts', import.meta.url)), '@slidev/parser/types': fileURLToPath(new URL('../parser/src/types.ts', import.meta.url)), '@slidev/parser': fileURLToPath(new URL('../parser/src/index.ts', import.meta.url)), }, - plugins: [{ - name: 'umd2esm', - setup(build: any) { - build.onResolve({ filter: /^(vscode-.*-languageservice|jsonc-parser)/ }, async (args: any) => { - const pathUmdMay = await resolvePath(args.path, { url: args.resolveDir }) - // Call twice the replace is to solve the problem of the path in Windows - const pathEsm = pathUmdMay.replace('/umd/', '/esm/').replace('\\umd\\', '\\esm\\') - return { path: pathEsm } - }) + plugins: [ + { + name: 'umd2esm', + resolveId: { + filter: { + id: /^(vscode-.*-languageservice|vscode-languageserver-types|jsonc-parser)$/, + }, + async handler(source, importer) { + const pathUmdMay = await resolvePath(source, { url: importer }) + // Call twice the replace is to solve the problem of the path in Windows + const pathEsm = pathUmdMay.replace('/umd/', '/esm/').replace('\\umd\\', '\\esm\\') + return { id: pathEsm } + }, + }, }, - }], + ], async onSuccess() { const assetsDir = join(import.meta.dirname, '../../assets') const resDir = join(import.meta.dirname, './dist/res') diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a4037c792c..8dfe9416b6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,6 +43,9 @@ catalogs: postcss-nested: specifier: ^7.0.2 version: 7.0.2 + prettier: + specifier: ^3.5.3 + version: 3.6.2 prettier-plugin-slidev: specifier: ^1.0.5 version: 1.0.5 @@ -141,9 +144,6 @@ catalogs: plantuml-encoder: specifier: ^1.4.0 version: 1.4.0 - prettier: - specifier: ^3.6.2 - version: 3.6.2 recordrtc: specifier: ^5.6.2 version: 5.6.2 @@ -404,19 +404,19 @@ catalogs: '@types/semver': specifier: ^7.7.0 version: 7.7.0 - '@types/vscode': - specifier: ^1.89.0 - version: 1.92.0 '@types/yargs': specifier: ^17.0.33 version: 17.0.33 vscode: '@volar/language-server': - specifier: ~2.4.15 + specifier: ~2.4.14 version: 2.4.15 '@volar/vscode': - specifier: ^2.4.15 + specifier: ^2.4.14 version: 2.4.15 + prettier: + specifier: ^2.8.7 + version: 2.8.7 reactive-vscode: specifier: ^0.3.0 version: 0.3.0 @@ -534,7 +534,7 @@ importers: specifier: catalog:dev version: 1.53.1 prettier: - specifier: catalog:frontend + specifier: catalog:dev version: 3.6.2 prettier-plugin-slidev: specifier: catalog:dev @@ -809,9 +809,6 @@ importers: pptxgenjs: specifier: catalog:prod version: 4.0.1 - prettier: - specifier: catalog:frontend - version: 3.6.2 recordrtc: specifier: catalog:frontend version: 5.6.2 @@ -1175,8 +1172,8 @@ importers: specifier: catalog:types version: 24.0.7 '@types/vscode': - specifier: catalog:types - version: 1.92.0 + specifier: ^1.101.0 + version: 1.101.0 '@volar/language-server': specifier: catalog:vscode version: 2.4.15 @@ -1193,11 +1190,11 @@ importers: specifier: catalog:dev version: 0.10.4 prettier: - specifier: catalog:frontend - version: 3.6.2 + specifier: catalog:vscode + version: 2.8.7 reactive-vscode: specifier: catalog:vscode - version: 0.3.0(@types/vscode@1.92.0) + version: 0.3.0(@types/vscode@1.101.0) tm-grammars: specifier: catalog:frontend version: 1.23.26 @@ -1206,7 +1203,7 @@ importers: version: 2.4.0 volar-service-prettier: specifier: catalog:vscode - version: 0.0.64(@volar/language-service@2.4.15)(prettier@3.6.2) + version: 0.0.64(@volar/language-service@2.4.15)(prettier@2.8.7) volar-service-yaml: specifier: catalog:vscode version: 0.0.64(@volar/language-service@2.4.15) @@ -2569,8 +2566,8 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/vscode@1.92.0': - resolution: {integrity: sha512-DcZoCj17RXlzB4XJ7IfKdPTcTGDLYvTOcTNkvtjXWF+K2TlKzHHkBEXNWQRpBIXixNEUgx39cQeTFunY0E2msw==} + '@types/vscode@1.101.0': + resolution: {integrity: sha512-ZWf0IWa+NGegdW3iU42AcDTFHWW7fApLdkdnBqwYEtHVIBGbTu0ZNQKP/kX3Ds/uMJXIMQNAojHR4vexCEEz5Q==} '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} @@ -8670,7 +8667,7 @@ snapshots: '@types/unist@3.0.3': {} - '@types/vscode@1.92.0': {} + '@types/vscode@1.101.0': {} '@types/web-bluetooth@0.0.21': {} @@ -9306,7 +9303,7 @@ snapshots: '@vue/language-core@2.2.10(typescript@5.8.3)': dependencies: - '@volar/language-core': 2.4.14 + '@volar/language-core': 2.4.15 '@vue/compiler-dom': 3.5.16 '@vue/compiler-vue2': 2.7.16 '@vue/shared': 3.5.16 @@ -9319,7 +9316,7 @@ snapshots: '@vue/language-core@2.2.4(typescript@5.8.3)': dependencies: - '@volar/language-core': 2.4.14 + '@volar/language-core': 2.4.15 '@vue/compiler-dom': 3.5.16 '@vue/compiler-vue2': 2.7.16 '@vue/shared': 3.5.16 @@ -12539,8 +12536,7 @@ snapshots: '@slidev/parser': 0.47.5 prettier: 3.6.2 - prettier@2.8.7: - optional: true + prettier@2.8.7: {} prettier@3.6.2: {} @@ -12608,10 +12604,10 @@ snapshots: strip-json-comments: 2.0.1 optional: true - reactive-vscode@0.3.0(@types/vscode@1.92.0): + reactive-vscode@0.3.0(@types/vscode@1.101.0): dependencies: '@reactive-vscode/reactivity': 0.3.0 - '@types/vscode': 1.92.0 + '@types/vscode': 1.101.0 read@1.0.7: dependencies: @@ -13792,12 +13788,12 @@ snapshots: - tsx - yaml - volar-service-prettier@0.0.64(@volar/language-service@2.4.15)(prettier@3.6.2): + volar-service-prettier@0.0.64(@volar/language-service@2.4.15)(prettier@2.8.7): dependencies: vscode-uri: 3.0.8 optionalDependencies: '@volar/language-service': 2.4.15 - prettier: 3.6.2 + prettier: 2.8.7 volar-service-yaml@0.0.64(@volar/language-service@2.4.15): dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2f0c7df104..5d442788e5 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -20,6 +20,7 @@ catalogs: ovsx: ^0.10.4 playwright-chromium: ^1.53.1 postcss-nested: ^7.0.2 + prettier: ^3.5.3 prettier-plugin-slidev: ^1.0.5 rimraf: ^6.0.1 simple-git-hooks: ^2.13.0 @@ -55,7 +56,6 @@ catalogs: mermaid: ^11.7.0 nanotar: ^0.2.0 plantuml-encoder: ^1.4.0 - prettier: ^3.6.2 recordrtc: ^5.6.2 shiki: ^3.7.0 shiki-magic-move: ^1.1.0 @@ -147,11 +147,11 @@ catalogs: '@types/recordrtc': ^5.6.14 '@types/resolve': ^1.20.6 '@types/semver': ^7.7.0 - '@types/vscode': ^1.89.0 '@types/yargs': ^17.0.33 vscode: - '@volar/language-server': ~2.4.15 - '@volar/vscode': ^2.4.15 + '@volar/language-server': ~2.4.14 + '@volar/vscode': ^2.4.14 + prettier: ^2.8.7 reactive-vscode: ^0.3.0 ts-json-schema-generator: ^2.4.0 volar-service-prettier: ^0.0.64 diff --git a/taze.config.ts b/taze.config.ts index 0516e730ac..9bfe446a79 100644 --- a/taze.config.ts +++ b/taze.config.ts @@ -6,5 +6,7 @@ export default defineConfig({ 'typeit': 'ignore', // `engines.vscode` must be updated when bumping `@types/vscode` version '@types/vscode': 'ignore', + // Prevent multiple versions. `volar-service-yaml` is using v2. + 'prettier': 'patch', }, })