From 899eeab499da5fc9c1381f3cbdfd1c60699c5e30 Mon Sep 17 00:00:00 2001 From: Noblet Ouways <91417411+Dsaquel@users.noreply.github.com> Date: Tue, 9 Dec 2025 10:52:09 +0100 Subject: [PATCH] chore: migrate fast-glob to tinyglobby (#23020) * chore: migrate fast-glob to tinyglobby * fix: ssr tests --- commitlint.config.mjs | 4 ++-- docs/.vitepress/build/generate-llms.ts | 6 ++--- docs/.vitepress/config/vite.ts | 2 +- docs/.vitepress/plugins/markdown-transform.ts | 2 +- docs/package.json | 2 +- internal/build/package.json | 2 +- internal/build/src/tasks/full-bundle.ts | 2 +- internal/build/src/tasks/modules.ts | 2 +- internal/build/src/tasks/types-definitions.ts | 2 +- internal/metadata/package.json | 2 +- internal/metadata/src/contributor.ts | 2 +- package.json | 2 +- play/vite.config.mts | 2 +- pnpm-lock.yaml | 24 +++++++++---------- scripts/sync-locale.ts | 4 ++-- ssr-testing/demo.spec.puppeteer.tsx | 8 +++---- 16 files changed, 34 insertions(+), 34 deletions(-) diff --git a/commitlint.config.mjs b/commitlint.config.mjs index 1582b35d32..2a8f3c84f4 100644 --- a/commitlint.config.mjs +++ b/commitlint.config.mjs @@ -1,8 +1,8 @@ import { execSync } from 'child_process' -import fg from 'fast-glob' +import { globSync } from 'tinyglobby' const getPackages = (packagePath) => - fg.sync('*', { cwd: packagePath, onlyDirectories: true }) + globSync('*', { cwd: packagePath, onlyDirectories: true }) const scopes = [ ...getPackages('packages'), diff --git a/docs/.vitepress/build/generate-llms.ts b/docs/.vitepress/build/generate-llms.ts index 9c275b7271..5861cc414b 100644 --- a/docs/.vitepress/build/generate-llms.ts +++ b/docs/.vitepress/build/generate-llms.ts @@ -1,6 +1,6 @@ import path from 'path' import fs from 'fs-extra' -import fg from 'fast-glob' +import { glob } from 'tinyglobby' async function generateLLms() { const cwd = process.cwd() @@ -12,7 +12,7 @@ async function generateLLms() { // Ensure siteDir exists await fs.ensureDir(siteDir) - const docs = await fg( + const docs = await glob( `{${docsDir.join(',')}}/**/*{${matchSuffixes.join(',')}}`, { cwd, @@ -72,7 +72,7 @@ async function generateLLms() { // 在examples目录下查找对应的Vue示例文件 const examplesDir = path.join(cwd, 'examples', componentName) if (fs.existsSync(examplesDir)) { - const vueFiles = await fg('**/*.vue', { + const vueFiles = await glob('**/*.vue', { cwd: examplesDir, absolute: true, }) diff --git a/docs/.vitepress/config/vite.ts b/docs/.vitepress/config/vite.ts index c0b8ca1583..6af70c101a 100644 --- a/docs/.vitepress/config/vite.ts +++ b/docs/.vitepress/config/vite.ts @@ -2,7 +2,7 @@ import path from 'path' import Inspect from 'vite-plugin-inspect' import UnoCSS from 'unocss/vite' import mkcert from 'vite-plugin-mkcert' -import glob from 'fast-glob' +import { glob } from 'tinyglobby' import vueJsx from '@vitejs/plugin-vue-jsx' import Components from 'unplugin-vue-components/vite' import Icons from 'unplugin-icons/vite' diff --git a/docs/.vitepress/plugins/markdown-transform.ts b/docs/.vitepress/plugins/markdown-transform.ts index 70e152f16a..046a4b0f1d 100644 --- a/docs/.vitepress/plugins/markdown-transform.ts +++ b/docs/.vitepress/plugins/markdown-transform.ts @@ -1,7 +1,7 @@ import fs from 'fs' import path from 'path' import { camelize } from '@vue/shared' -import glob from 'fast-glob' +import { glob } from 'tinyglobby' import { docRoot, docsDirName, projRoot } from '@element-plus/build-utils' import { REPO_BRANCH, REPO_PATH } from '@element-plus/build-constants' import { getLang, languages } from '../utils/lang' diff --git a/docs/package.json b/docs/package.json index 3c668a9481..761522b150 100644 --- a/docs/package.json +++ b/docs/package.json @@ -30,7 +30,7 @@ "@vitejs/plugin-vue-jsx": "^4.0.1", "chalk": "^4.1.2", "consola": "^2.15.3", - "fast-glob": "^3.2.11", + "tinyglobby": "^0.2.15", "markdown-it-container": "^3.0.0", "unocss": "^66.5.6", "unplugin-icons": "^0.14.15", diff --git a/internal/build/package.json b/internal/build/package.json index cbbd6375e5..d0a653e3f7 100644 --- a/internal/build/package.json +++ b/internal/build/package.json @@ -27,7 +27,7 @@ "components-helper": "^2.1.4", "consola": "^2.15.3", "esbuild": "^0.14.47", - "fast-glob": "^3.2.11", + "tinyglobby": "^0.2.15", "fs-extra": "^10.1.0", "gulp": "^4.0.2", "lodash": "^4.17.21", diff --git a/internal/build/src/tasks/full-bundle.ts b/internal/build/src/tasks/full-bundle.ts index 0d6cf4d675..a504ccbe48 100644 --- a/internal/build/src/tasks/full-bundle.ts +++ b/internal/build/src/tasks/full-bundle.ts @@ -8,7 +8,7 @@ import VueMacros from 'unplugin-vue-macros/rollup' import vueJsx from '@vitejs/plugin-vue-jsx' import esbuild, { minify as minifyPlugin } from 'rollup-plugin-esbuild' import { parallel } from 'gulp' -import glob from 'fast-glob' +import { glob } from 'tinyglobby' import { camelCase, upperFirst } from 'lodash-unified' import { PKG_BRAND_NAME, diff --git a/internal/build/src/tasks/modules.ts b/internal/build/src/tasks/modules.ts index 986cff50d7..121d0b4ab4 100644 --- a/internal/build/src/tasks/modules.ts +++ b/internal/build/src/tasks/modules.ts @@ -7,7 +7,7 @@ import VueMacros from 'unplugin-vue-macros/rollup' import { nodeResolve } from '@rollup/plugin-node-resolve' import commonjs from '@rollup/plugin-commonjs' import esbuild from 'rollup-plugin-esbuild' -import glob from 'fast-glob' +import { glob } from 'tinyglobby' import { epRoot, excludeFiles, pkgRoot } from '@element-plus/build-utils' import { generateExternal, withTaskName, writeBundles } from '../utils' import { ElementPlusAlias } from '../plugins/element-plus-alias' diff --git a/internal/build/src/tasks/types-definitions.ts b/internal/build/src/tasks/types-definitions.ts index 4930d51399..c6b5e1f700 100644 --- a/internal/build/src/tasks/types-definitions.ts +++ b/internal/build/src/tasks/types-definitions.ts @@ -1,6 +1,6 @@ import path from 'path' import { readFile, writeFile } from 'fs/promises' -import glob from 'fast-glob' +import { glob } from 'tinyglobby' import { copy, remove } from 'fs-extra' import { buildOutput } from '@element-plus/build-utils' import { pathRewriter, run } from '../utils' diff --git a/internal/metadata/package.json b/internal/metadata/package.json index 3c809e85ff..8a825c0f06 100644 --- a/internal/metadata/package.json +++ b/internal/metadata/package.json @@ -28,7 +28,7 @@ "@types/lodash-es": "^4.17.12", "chalk": "^5.3.0", "consola": "^2.15.3", - "fast-glob": "^3.3.2", + "tinyglobby": "^0.2.15", "lodash-es": "^4.17.21", "octokit": "^2.1.0", "tsx": "^4.7.1" diff --git a/internal/metadata/src/contributor.ts b/internal/metadata/src/contributor.ts index d57d417815..ec59b2c955 100644 --- a/internal/metadata/src/contributor.ts +++ b/internal/metadata/src/contributor.ts @@ -1,6 +1,6 @@ import path from 'path' import { existsSync } from 'fs' -import glob from 'fast-glob' +import { glob } from 'tinyglobby' import { Octokit } from 'octokit' import consola from 'consola' import chalk from 'chalk' diff --git a/package.json b/package.json index 181b9fab0d..ee7c17b29a 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,6 @@ "czg": "^1.11.1", "eslint": "^9.37.0", "expect-type": "^0.13.0", - "fast-glob": "^3.2.11", "happy-dom": "^17.4.4", "husky": "^9.0.11", "jsdom": "16.4.0", @@ -105,6 +104,7 @@ "resize-observer-polyfill": "^1.5.1", "rimraf": "^4.4.1", "sass": "^1.79.3", + "tinyglobby": "^0.2.15", "tsx": "^4.19.3", "typescript": "~5.5.4", "unplugin-vue-macros": "^2.7.11", diff --git a/play/vite.config.mts b/play/vite.config.mts index b04e8da06c..d3f259adfe 100644 --- a/play/vite.config.mts +++ b/play/vite.config.mts @@ -6,7 +6,7 @@ import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' import Inspect from 'vite-plugin-inspect' import mkcert from 'vite-plugin-mkcert' -import glob from 'fast-glob' +import { glob } from 'tinyglobby' import VueMacros from 'unplugin-vue-macros/vite' import { epPackage, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ee20a782d2..d1a1cb93ba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -192,9 +192,6 @@ importers: expect-type: specifier: ^0.13.0 version: 0.13.0 - fast-glob: - specifier: ^3.2.11 - version: 3.2.11 happy-dom: specifier: ^17.4.4 version: 17.4.4 @@ -222,6 +219,9 @@ importers: sass: specifier: ^1.79.3 version: 1.79.3 + tinyglobby: + specifier: ^0.2.15 + version: 0.2.15 tsx: specifier: ^4.19.3 version: 4.19.3 @@ -301,12 +301,12 @@ importers: consola: specifier: ^2.15.3 version: 2.15.3 - fast-glob: - specifier: ^3.2.11 - version: 3.2.11 markdown-it-container: specifier: ^3.0.0 version: 3.0.0 + tinyglobby: + specifier: ^0.2.15 + version: 0.2.15 unocss: specifier: ^66.5.6 version: 66.5.6(postcss@8.5.6)(vite@5.4.10(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0)) @@ -370,9 +370,6 @@ importers: esbuild: specifier: ^0.14.47 version: 0.14.47 - fast-glob: - specifier: ^3.2.11 - version: 3.2.11 fs-extra: specifier: ^10.1.0 version: 10.1.0 @@ -388,6 +385,9 @@ importers: rollup-plugin-esbuild: specifier: ^4.9.1 version: 4.9.1(esbuild@0.14.47)(rollup@2.75.7) + tinyglobby: + specifier: ^0.2.15 + version: 0.2.15 unplugin-vue-macros: specifier: ^0.11.2 version: 0.11.2(esbuild@0.14.47)(rollup@2.75.7)(vite@5.4.10(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0))(vue@3.2.37) @@ -490,15 +490,15 @@ importers: consola: specifier: ^2.15.3 version: 2.15.3 - fast-glob: - specifier: ^3.3.2 - version: 3.3.2 lodash-es: specifier: ^4.17.21 version: 4.17.21 octokit: specifier: ^2.1.0 version: 2.1.0 + tinyglobby: + specifier: ^0.2.15 + version: 0.2.15 tsx: specifier: ^4.7.1 version: 4.7.1 diff --git a/scripts/sync-locale.ts b/scripts/sync-locale.ts index dd010e2881..823792c4d2 100644 --- a/scripts/sync-locale.ts +++ b/scripts/sync-locale.ts @@ -1,6 +1,6 @@ import { readFileSync, writeFileSync } from 'node:fs' import { basename, resolve } from 'node:path' -import glob from 'fast-glob' +import { globSync } from 'tinyglobby' import consola from 'consola' import { isArray, isObject, isString } from 'lodash-unified' import { localeRoot, normalizePath } from '@element-plus/build-utils' @@ -193,7 +193,7 @@ function main() { const enContent = readFileSync(enFile, 'utf-8') const enObject = parseLocaleFile(enContent) - const localeFiles = glob.sync(localePath) + const localeFiles = globSync(localePath) let totalUpdated = 0 let totalAdded = 0 diff --git a/ssr-testing/demo.spec.puppeteer.tsx b/ssr-testing/demo.spec.puppeteer.tsx index c01cf575a7..0eade784c9 100644 --- a/ssr-testing/demo.spec.puppeteer.tsx +++ b/ssr-testing/demo.spec.puppeteer.tsx @@ -3,7 +3,7 @@ import { createApp } from 'vue' import { renderToString } from '@vue/server-renderer' import { afterAll, beforeAll, describe, expect, it } from 'vitest' import puppeteer from 'puppeteer' -import glob from 'fast-glob' +import { globSync } from 'tinyglobby' import ElementPlus, { ID_INJECTION_KEY, ZINDEX_INJECTION_KEY, @@ -29,9 +29,9 @@ describe('Cypress Button', () => { }) describe('when initialized', () => { - const demoPaths = glob - .sync(`${demoRoot}/*.vue`) - .map((demo) => demo.slice(demoRoot.length + 1)) + const demoPaths = globSync(`${demoRoot}/*.vue`, { absolute: true }).map( + (demo) => demo.slice(demoRoot.length + 1) + ) it.each(demoPaths)(`render %s correctly`, async (demoPath) => { const page = await browser.newPage()