diff --git a/__tests__/init/init.test.ts b/__tests__/init/init.test.ts
index 7766b060..1497fd92 100644
--- a/__tests__/init/init.test.ts
+++ b/__tests__/init/init.test.ts
@@ -1,4 +1,4 @@
-import fs from 'fs-extra'
+import fs from 'node:fs'
import getPort from 'get-port'
import { nanoid } from 'nanoid'
import path from 'node:path'
@@ -33,12 +33,12 @@ const variations = themes.flatMap((theme) =>
afterAll(async () => {
await page.close()
await browser.close()
- await fs.remove(tempDir)
+ await fs.promises.rm(tempDir, { recursive: true, force: true })
})
test.each(variations)('init %s', async (_, { theme, useTs }) => {
const root = getTempRoot()
- await fs.remove(root)
+ await fs.promises.rm(root, { recursive: true, force: true })
scaffold({ root, theme, useTs, injectNpmScripts: false })
const port = await getPort()
diff --git a/docs/config.ts b/docs/config.ts
index 8620d955..8f38b2b4 100644
--- a/docs/config.ts
+++ b/docs/config.ts
@@ -1,4 +1,4 @@
-import { createRequire } from 'module'
+import { createRequire } from 'node:module'
import { defineAdditionalConfig, type DefaultTheme } from 'vitepress'
const require = createRequire(import.meta.url)
diff --git a/docs/en/guide/routing.md b/docs/en/guide/routing.md
index 2631c632..c858ec13 100644
--- a/docs/en/guide/routing.md
+++ b/docs/en/guide/routing.md
@@ -329,7 +329,7 @@ The paths loader module is run in Node.js and only executed during build time. Y
Generating paths from local files:
```js
-import fs from 'fs'
+import fs from 'node:fs'
export default {
paths() {
diff --git a/docs/es/config.ts b/docs/es/config.ts
index fee38361..382ad71b 100644
--- a/docs/es/config.ts
+++ b/docs/es/config.ts
@@ -1,4 +1,4 @@
-import { createRequire } from 'module'
+import { createRequire } from 'node:module'
import { defineAdditionalConfig, type DefaultTheme } from 'vitepress'
const require = createRequire(import.meta.url)
diff --git a/docs/es/guide/routing.md b/docs/es/guide/routing.md
index e3c42162..e4d2894b 100644
--- a/docs/es/guide/routing.md
+++ b/docs/es/guide/routing.md
@@ -290,7 +290,7 @@ El módulo de carga de paths es ejecutado en Node.js y apenas durante el momento
Generando paths a partir de archivos locales:
```js
-import fs from 'fs'
+import fs from 'node:fs'
export default {
paths() {
diff --git a/docs/fa/config.ts b/docs/fa/config.ts
index 4cb8c245..c3b34727 100644
--- a/docs/fa/config.ts
+++ b/docs/fa/config.ts
@@ -1,4 +1,4 @@
-import { createRequire } from 'module'
+import { createRequire } from 'node:module'
import { defineAdditionalConfig, type DefaultTheme } from 'vitepress'
const require = createRequire(import.meta.url)
diff --git a/docs/fa/guide/routing.md b/docs/fa/guide/routing.md
index f159a876..b8c3a99b 100644
--- a/docs/fa/guide/routing.md
+++ b/docs/fa/guide/routing.md
@@ -295,7 +295,7 @@ export default {
تولید مسیرها از فایلهای محلی:
```js
-import fs from 'fs'
+import fs from 'node:fs'
export default {
paths() {
diff --git a/docs/ja/config.ts b/docs/ja/config.ts
index 0631ca82..bc92b006 100644
--- a/docs/ja/config.ts
+++ b/docs/ja/config.ts
@@ -1,4 +1,4 @@
-import { createRequire } from 'module'
+import { createRequire } from 'node:module'
import { defineAdditionalConfig, type DefaultTheme } from 'vitepress'
const require = createRequire(import.meta.url)
diff --git a/docs/ja/guide/routing.md b/docs/ja/guide/routing.md
index f624bee0..a77e6062 100644
--- a/docs/ja/guide/routing.md
+++ b/docs/ja/guide/routing.md
@@ -304,7 +304,7 @@ export default {
ローカルファイルから生成する例:
```js
-import fs from 'fs'
+import fs from 'node:fs'
export default {
paths() {
diff --git a/docs/ko/config.ts b/docs/ko/config.ts
index 4a076036..7a275cd3 100644
--- a/docs/ko/config.ts
+++ b/docs/ko/config.ts
@@ -1,4 +1,4 @@
-import { createRequire } from 'module'
+import { createRequire } from 'node:module'
import { defineAdditionalConfig, type DefaultTheme } from 'vitepress'
const require = createRequire(import.meta.url)
diff --git a/docs/ko/guide/routing.md b/docs/ko/guide/routing.md
index b0a8e23e..35c7621e 100644
--- a/docs/ko/guide/routing.md
+++ b/docs/ko/guide/routing.md
@@ -291,7 +291,7 @@ export default {
로컬 파일에서 경로 생성:
```js
-import fs from 'fs'
+import fs from 'node:fs'
export default {
paths() {
diff --git a/docs/pt/config.ts b/docs/pt/config.ts
index 5f71d84f..193eb2f4 100644
--- a/docs/pt/config.ts
+++ b/docs/pt/config.ts
@@ -1,4 +1,4 @@
-import { createRequire } from 'module'
+import { createRequire } from 'node:module'
import { defineAdditionalConfig, type DefaultTheme } from 'vitepress'
const require = createRequire(import.meta.url)
diff --git a/docs/pt/guide/routing.md b/docs/pt/guide/routing.md
index 996f75bb..eb97ff01 100644
--- a/docs/pt/guide/routing.md
+++ b/docs/pt/guide/routing.md
@@ -290,7 +290,7 @@ O módulo de carregamento de caminhos é executado no Node.js e apenas durante o
Gerando caminhos a partir de arquivos locais:
```js
-import fs from 'fs'
+import fs from 'node:fs'
export default {
paths() {
diff --git a/docs/ru/config.ts b/docs/ru/config.ts
index 515cffba..aec80866 100644
--- a/docs/ru/config.ts
+++ b/docs/ru/config.ts
@@ -1,4 +1,4 @@
-import { createRequire } from 'module'
+import { createRequire } from 'node:module'
import { defineAdditionalConfig, type DefaultTheme } from 'vitepress'
const require = createRequire(import.meta.url)
diff --git a/docs/ru/guide/routing.md b/docs/ru/guide/routing.md
index d7971f77..37e48109 100644
--- a/docs/ru/guide/routing.md
+++ b/docs/ru/guide/routing.md
@@ -329,7 +329,7 @@ export default {
Генерация путей из локальных файлов:
```js
-import fs from 'fs'
+import fs from 'node:fs'
export default {
paths() {
diff --git a/docs/zh/config.ts b/docs/zh/config.ts
index 3f20ec50..9769c1a9 100644
--- a/docs/zh/config.ts
+++ b/docs/zh/config.ts
@@ -1,4 +1,4 @@
-import { createRequire } from 'module'
+import { createRequire } from 'node:module'
import { defineAdditionalConfig, type DefaultTheme } from 'vitepress'
const require = createRequire(import.meta.url)
diff --git a/docs/zh/guide/routing.md b/docs/zh/guide/routing.md
index db652f97..06fa2eba 100644
--- a/docs/zh/guide/routing.md
+++ b/docs/zh/guide/routing.md
@@ -291,7 +291,7 @@ export default {
从本地文件生成路径:
```js
-import fs from 'fs'
+import fs from 'node:fs'
export default {
paths() {
diff --git a/package.json b/package.json
index dfc1b25f..0a5624ab 100644
--- a/package.json
+++ b/package.json
@@ -135,7 +135,6 @@
"@rollup/plugin-node-resolve": "^16.0.3",
"@rollup/plugin-replace": "^6.0.3",
"@types/cross-spawn": "^6.0.6",
- "@types/fs-extra": "^11.0.4",
"@types/lodash.template": "^4.5.3",
"@types/mark.js": "^8.11.12",
"@types/markdown-it-attrs": "^4.1.3",
@@ -150,7 +149,6 @@
"conventional-changelog-angular": "^8.3.1",
"cross-spawn": "^7.0.6",
"esbuild": "^0.27.7",
- "fs-extra": "^11.3.5",
"get-port": "^7.2.0",
"gray-matter": "^4.0.3",
"lint-staged": "^16.4.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6a5a2014..46c7c3c9 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -137,9 +137,6 @@ importers:
'@types/cross-spawn':
specifier: ^6.0.6
version: 6.0.6
- '@types/fs-extra':
- specifier: ^11.0.4
- version: 11.0.4
'@types/lodash.template':
specifier: ^4.5.3
version: 4.5.3
@@ -182,9 +179,6 @@ importers:
esbuild:
specifier: ^0.27.7
version: 0.27.7
- fs-extra:
- specifier: ^11.3.5
- version: 11.3.5
get-port:
specifier: ^7.2.0
version: 7.2.0
@@ -1044,18 +1038,12 @@ packages:
'@types/estree@1.0.9':
resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
- '@types/fs-extra@11.0.4':
- resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==}
-
'@types/hast@3.0.4':
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
'@types/jquery@4.0.1':
resolution: {integrity: sha512-9a59A/tycXgYuPABcp6/3spSShn0NT2UOM4EfHvMumjYi4lJWTsK5SZWjhx3yRm9IHGCeWXdV2YfNsrWrft/CA==}
- '@types/jsonfile@6.1.4':
- resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==}
-
'@types/linkify-it@5.0.0':
resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
@@ -1728,10 +1716,6 @@ packages:
resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
engines: {node: '>=0.4.x'}
- fs-extra@11.3.5:
- resolution: {integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==}
- engines: {node: '>=14.14'}
-
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
@@ -1775,9 +1759,6 @@ packages:
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
engines: {node: '>= 0.4'}
- graceful-fs@4.2.11:
- resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
-
gray-matter@4.0.3:
resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
engines: {node: '>=6.0'}
@@ -1917,9 +1898,6 @@ packages:
resolution: {integrity: sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==}
hasBin: true
- jsonfile@6.2.1:
- resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==}
-
juice@8.1.0:
resolution: {integrity: sha512-FLzurJrx5Iv1e7CfBSZH68dC04EEvXvvVvPYB7Vx1WAuhCp1ZPIMtqxc+WTWxVkpTIC2Ach/GAv0rQbtGf6YMA==}
engines: {node: '>=10.0.0'}
@@ -2799,10 +2777,6 @@ packages:
unist-util-visit@5.1.0:
resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==}
- universalify@2.0.1:
- resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
- engines: {node: '>= 10.0.0'}
-
unplugin-utils@0.2.5:
resolution: {integrity: sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg==}
engines: {node: '>=18.12.0'}
@@ -3551,21 +3525,12 @@ snapshots:
'@types/estree@1.0.9': {}
- '@types/fs-extra@11.0.4':
- dependencies:
- '@types/jsonfile': 6.1.4
- '@types/node': 25.9.4
-
'@types/hast@3.0.4':
dependencies:
'@types/unist': 3.0.3
'@types/jquery@4.0.1': {}
- '@types/jsonfile@6.1.4':
- dependencies:
- '@types/node': 25.9.4
-
'@types/linkify-it@5.0.0': {}
'@types/lodash.template@4.5.3':
@@ -4234,12 +4199,6 @@ snapshots:
format@0.2.2: {}
- fs-extra@11.3.5:
- dependencies:
- graceful-fs: 4.2.11
- jsonfile: 6.2.1
- universalify: 2.0.1
-
fsevents@2.3.3:
optional: true
@@ -4281,8 +4240,6 @@ snapshots:
gopd@1.2.0: {}
- graceful-fs@4.2.11: {}
-
gray-matter@4.0.3:
dependencies:
js-yaml: 3.15.0
@@ -4428,12 +4385,6 @@ snapshots:
argparse: 1.0.10
esprima: 4.0.1
- jsonfile@6.2.1:
- dependencies:
- universalify: 2.0.1
- optionalDependencies:
- graceful-fs: 4.2.11
-
juice@8.1.0:
dependencies:
cheerio: 1.0.0-rc.10
@@ -5437,8 +5388,6 @@ snapshots:
unist-util-is: 6.0.1
unist-util-visit-parents: 6.0.2
- universalify@2.0.1: {}
-
unplugin-utils@0.2.5:
dependencies:
pathe: 2.0.3
diff --git a/scripts/copyClient.js b/scripts/copyClient.js
index 465be10c..5815352a 100644
--- a/scripts/copyClient.js
+++ b/scripts/copyClient.js
@@ -1,4 +1,4 @@
-import { copy } from 'fs-extra'
+import { cp } from 'node:fs/promises'
import { globSync } from 'tinyglobby'
function toDest(file) {
@@ -7,5 +7,5 @@ function toDest(file) {
globSync(['src/client/**']).forEach((file) => {
if (/(\.ts|tsconfig\.json)$/.test(file)) return
- copy(file, toDest(file))
+ cp(file, toDest(file))
})
diff --git a/scripts/copyShared.js b/scripts/copyShared.js
index af73c48e..c9512bd1 100644
--- a/scripts/copyShared.js
+++ b/scripts/copyShared.js
@@ -1,9 +1,9 @@
-import { copy } from 'fs-extra'
+import { cp } from 'node:fs/promises'
import { globSync } from 'tinyglobby'
globSync(['src/shared/**/*.ts']).forEach(async (file) => {
await Promise.all([
- copy(file, file.replace(/^src\/shared\//, 'src/node/')),
- copy(file, file.replace(/^src\/shared\//, 'src/client/'))
+ cp(file, file.replace(/^src\/shared\//, 'src/node/')),
+ cp(file, file.replace(/^src\/shared\//, 'src/client/'))
])
})
diff --git a/scripts/release.js b/scripts/release.js
index b35c9019..69ab8efc 100644
--- a/scripts/release.js
+++ b/scripts/release.js
@@ -1,8 +1,8 @@
import { spawn } from 'node:child_process'
import { readFileSync, writeFileSync } from 'node:fs'
+import { createRequire } from 'node:module'
import { resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
-import { createRequire } from 'node:module'
import c from 'picocolors'
import prompts from 'prompts'
import semver from 'semver'
diff --git a/scripts/watchAndCopy.js b/scripts/watchAndCopy.js
index c66085f8..66da6f0d 100644
--- a/scripts/watchAndCopy.js
+++ b/scripts/watchAndCopy.js
@@ -1,15 +1,15 @@
import { watch } from 'chokidar'
-import { copy, remove } from 'fs-extra'
+import { cp, rm } from 'node:fs/promises'
import { normalizePath } from 'vite'
function toClientAndNode(method, file) {
file = normalizePath(file)
if (method === 'copy') {
- copy(file, file.replace(/^src\/shared\//, 'src/node/'))
- copy(file, file.replace(/^src\/shared\//, 'src/client/'))
+ cp(file, file.replace(/^src\/shared\//, 'src/node/'))
+ cp(file, file.replace(/^src\/shared\//, 'src/client/'))
} else if (method === 'remove') {
- remove(file.replace(/^src\/shared\//, 'src/node/'))
- remove(file.replace(/^src\/shared\//, 'src/client/'))
+ rm(file.replace(/^src\/shared\//, 'src/node/'), { force: true })
+ rm(file.replace(/^src\/shared\//, 'src/client/'), { force: true })
}
}
@@ -31,6 +31,6 @@ watch('src/client', {
ignored: (path, stats) =>
stats?.isFile() && (path.endsWith('.ts') || path.endsWith('tsconfig.json'))
})
- .on('change', (file) => copy(file, toDist(file)))
- .on('add', (file) => copy(file, toDist(file)))
- .on('unlink', (file) => remove(toDist(file)))
+ .on('change', (file) => cp(file, toDist(file)))
+ .on('add', (file) => cp(file, toDist(file)))
+ .on('unlink', (file) => rm(toDist(file), { force: true }))
diff --git a/src/client/index.ts b/src/client/index.ts
index 6112e866..47074c43 100644
--- a/src/client/index.ts
+++ b/src/client/index.ts
@@ -2,8 +2,8 @@
// so the user can do `import { useRoute, useData } from 'vitepress'`
// generic types
-export type { VitePressData } from './shared'
export type { Route, Router } from './app/router'
+export type { VitePressData } from './shared'
// theme types
export type { EnhanceAppContext, Theme } from './app/theme'
diff --git a/src/client/theme-default/components/VPButton.vue b/src/client/theme-default/components/VPButton.vue
index d0a5de70..707b9180 100644
--- a/src/client/theme-default/components/VPButton.vue
+++ b/src/client/theme-default/components/VPButton.vue
@@ -1,7 +1,7 @@
diff --git a/src/client/theme-default/components/VPDocAsideCarbonAds.vue b/src/client/theme-default/components/VPDocAsideCarbonAds.vue
index d10598dd..a04d4f67 100644
--- a/src/client/theme-default/components/VPDocAsideCarbonAds.vue
+++ b/src/client/theme-default/components/VPDocAsideCarbonAds.vue
@@ -1,6 +1,6 @@
diff --git a/src/client/theme-default/components/VPMenuLink.vue b/src/client/theme-default/components/VPMenuLink.vue
index 028d3e82..c98bf19c 100644
--- a/src/client/theme-default/components/VPMenuLink.vue
+++ b/src/client/theme-default/components/VPMenuLink.vue
@@ -1,8 +1,8 @@
diff --git a/src/client/theme-default/components/VPNavBarMenuGroup.vue b/src/client/theme-default/components/VPNavBarMenuGroup.vue
index 85350d47..4d014a49 100644
--- a/src/client/theme-default/components/VPNavBarMenuGroup.vue
+++ b/src/client/theme-default/components/VPNavBarMenuGroup.vue
@@ -1,8 +1,8 @@
diff --git a/src/client/theme-default/components/VPNavScreenMenuGroupLink.vue b/src/client/theme-default/components/VPNavScreenMenuGroupLink.vue
index 0ed634c0..9a884e01 100644
--- a/src/client/theme-default/components/VPNavScreenMenuGroupLink.vue
+++ b/src/client/theme-default/components/VPNavScreenMenuGroupLink.vue
@@ -1,8 +1,8 @@
`
- fs.removeSync(path.resolve(config.outDir, matchingChunk.fileName))
+ fs.rmSync(path.resolve(config.outDir, matchingChunk.fileName), {
+ force: true
+ })
} else {
inlinedScript = ``
}
@@ -189,7 +191,7 @@ export async function renderPage(