diff --git a/package.json b/package.json index 2b5982f465..b8826ec617 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,6 @@ "eslint-plugin-no-only-tests": "3.3.0", "eslint-plugin-perfectionist": "3.2.0", "eslint-typegen": "0.3.1", - "globby": "14.0.2", "h3": "npm:h3-nightly@2.0.0-1718872656.6765a6e", "happy-dom": "15.0.0", "jiti": "2.0.0-beta.3", @@ -94,6 +93,7 @@ "semver": "7.6.3", "std-env": "3.7.0", "tinyexec": "0.2.0", + "tinyglobby": "0.2.2", "typescript": "5.5.4", "ufo": "1.5.4", "vitest": "2.0.5", diff --git a/packages/ui-templates/lib/prerender.ts b/packages/ui-templates/lib/prerender.ts index 2d1c4660c5..053de48927 100644 --- a/packages/ui-templates/lib/prerender.ts +++ b/packages/ui-templates/lib/prerender.ts @@ -1,14 +1,11 @@ -import { join, resolve } from 'node:path' import { fileURLToPath } from 'node:url' import { promises as fsp } from 'node:fs' -import { globby } from 'globby' +import { glob } from 'tinyglobby' const templatesRoot = fileURLToPath(new URL('..', import.meta.url)) -const r = (...path: string[]) => resolve(join(templatesRoot, ...path)) - async function main () { - const templates = await globby(r('dist/templates/*.js')) + const templates = await glob(['dist/templates/*.js'], { cwd: templatesRoot }) for (const file of templates) { const { template } = await import(file) const updated = template({ diff --git a/packages/ui-templates/lib/render.ts b/packages/ui-templates/lib/render.ts index 1542f9386f..0e55425b35 100644 --- a/packages/ui-templates/lib/render.ts +++ b/packages/ui-templates/lib/render.ts @@ -1,13 +1,13 @@ import { fileURLToPath } from 'node:url' import { readFileSync, rmdirSync, unlinkSync, writeFileSync } from 'node:fs' import { copyFile } from 'node:fs/promises' -import { basename, dirname, join, resolve } from 'pathe' +import { basename, dirname, join } from 'pathe' import type { Plugin } from 'vite' // @ts-expect-error https://github.com/GoogleChromeLabs/critters/pull/151 import Critters from 'critters' import { genObjectFromRawEntries } from 'knitwork' import htmlMinifier from 'html-minifier' -import { globby } from 'globby' +import { glob } from 'tinyglobby' import { camelCase } from 'scule' import { version } from '../../nuxt/package.json' @@ -26,7 +26,10 @@ export const RenderPlugin = () => { enforce: 'post', async writeBundle () { const critters = new Critters({ path: outputDir }) - const htmlFiles = await globby(resolve(outputDir, 'templates/**/*.html'), { absolute: true }) + const htmlFiles = await glob(['templates/**/*.html'], { + cwd: outputDir, + absolute: true, + }) const templateExports: Array<{ exportName: string diff --git a/packages/ui-templates/package.json b/packages/ui-templates/package.json index 7ca56f6792..ab813e1044 100644 --- a/packages/ui-templates/package.json +++ b/packages/ui-templates/package.json @@ -21,7 +21,6 @@ "@types/html-minifier": "4.0.5", "@unocss/reset": "0.62.2", "critters": "0.0.24", - "globby": "14.0.2", "html-minifier": "4.0.0", "html-validate": "8.21.0", "jiti": "2.0.0-beta.3", @@ -30,6 +29,7 @@ "prettier": "3.3.3", "scule": "1.3.0", "tinyexec": "0.2.0", + "tinyglobby": "0.2.2", "unocss": "0.62.2", "vite": "5.4.2" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 768b922288..336b86344b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -107,9 +107,6 @@ importers: eslint-typegen: specifier: 0.3.1 version: 0.3.1(eslint@9.9.0(jiti@2.0.0-beta.3)) - globby: - specifier: 14.0.2 - version: 14.0.2 h3: specifier: npm:h3-nightly@2.0.0-1718872656.6765a6e version: h3-nightly@2.0.0-1718872656.6765a6e @@ -155,6 +152,9 @@ importers: tinyexec: specifier: 0.2.0 version: 0.2.0 + tinyglobby: + specifier: 0.2.2 + version: 0.2.2 typescript: specifier: 5.5.4 version: 5.5.4 @@ -605,9 +605,6 @@ importers: critters: specifier: 0.0.24 version: 0.0.24 - globby: - specifier: 14.0.2 - version: 14.0.2 html-minifier: specifier: 4.0.0 version: 4.0.0 @@ -632,6 +629,9 @@ importers: tinyexec: specifier: 0.2.0 version: 0.2.0 + tinyglobby: + specifier: 0.2.2 + version: 0.2.2 unocss: specifier: 0.62.2 version: 0.62.2(@unocss/webpack@0.62.2(rollup@4.21.0)(webpack@5.94.0(esbuild@0.23.1)))(postcss@8.4.41)(rollup@4.21.0)(vite@5.4.2(@types/node@20.16.1)(sass@1.69.4)(terser@5.27.0)) diff --git a/scripts/_utils.ts b/scripts/_utils.ts index 0ca3f1d673..8e8bb8bdf3 100644 --- a/scripts/_utils.ts +++ b/scripts/_utils.ts @@ -2,7 +2,7 @@ import { execSync } from 'node:child_process' import { promises as fsp } from 'node:fs' import { $fetch } from 'ofetch' import { resolve } from 'pathe' -import { globby } from 'globby' +import { glob } from 'tinyglobby' import { exec } from 'tinyexec' import { determineSemverChange, getGitDiff, loadChangelogConfig, parseCommits } from 'changelogen' @@ -43,7 +43,7 @@ export async function loadPackage (dir: string) { export async function loadWorkspace (dir: string) { const workspacePkg = await loadPackage(dir) - const pkgDirs = (await globby(['packages/*'], { onlyDirectories: true })).sort() + const pkgDirs = (await glob(['packages/*'], { onlyDirectories: true })).sort() const packages: Package[] = [] diff --git a/test/bundle.test.ts b/test/bundle.test.ts index f5a67f98a7..3f7ff98854 100644 --- a/test/bundle.test.ts +++ b/test/bundle.test.ts @@ -2,7 +2,7 @@ import { fileURLToPath } from 'node:url' import fsp from 'node:fs/promises' import { beforeAll, describe, expect, it } from 'vitest' import { exec } from 'tinyexec' -import { globby } from 'globby' +import { glob } from 'tinyglobby' import { join } from 'pathe' describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM_CI)('minimal nuxt application', () => { @@ -18,7 +18,7 @@ describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM // Identical behaviour between inline/external vue options as this should only affect the server build for (const outputDir of ['.output', '.output-inline']) { it('default client bundle size', async () => { - const clientStats = await analyzeSizes('**/*.js', join(rootDir, outputDir, 'public')) + const clientStats = await analyzeSizes(['**/*.js'], join(rootDir, outputDir, 'public')) expect.soft(roundToKilobytes(clientStats.totalBytes)).toMatchInlineSnapshot(`"108k"`) expect(clientStats.files.map(f => f.replace(/\..*\.js/, '.js'))).toMatchInlineSnapshot(` [ @@ -34,7 +34,7 @@ describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM const serverStats = await analyzeSizes(['**/*.mjs', '!node_modules'], serverDir) expect.soft(roundToKilobytes(serverStats.totalBytes)).toMatchInlineSnapshot(`"205k"`) - const modules = await analyzeSizes('node_modules/**/*', serverDir) + const modules = await analyzeSizes(['node_modules/**/*'], serverDir) expect.soft(roundToKilobytes(modules.totalBytes)).toMatchInlineSnapshot(`"1355k"`) const packages = modules.files @@ -75,7 +75,7 @@ describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM const serverStats = await analyzeSizes(['**/*.mjs', '!node_modules'], serverDir) expect.soft(roundToKilobytes(serverStats.totalBytes)).toMatchInlineSnapshot(`"529k"`) - const modules = await analyzeSizes('node_modules/**/*', serverDir) + const modules = await analyzeSizes(['node_modules/**/*'], serverDir) expect.soft(roundToKilobytes(modules.totalBytes)).toMatchInlineSnapshot(`"86.1k"`) const packages = modules.files @@ -96,8 +96,8 @@ describe.skipIf(process.env.SKIP_BUNDLE_SIZE === 'true' || process.env.ECOSYSTEM }) }) -async function analyzeSizes (pattern: string | string[], rootDir: string) { - const files: string[] = await globby(pattern, { cwd: rootDir }) +async function analyzeSizes (pattern: string[], rootDir: string) { + const files: string[] = await glob(pattern, { cwd: rootDir }) let totalBytes = 0 for (const file of files) { const path = join(rootDir, file) diff --git a/test/prepare.ts b/test/prepare.ts index 31d6d72d49..891ebdd497 100644 --- a/test/prepare.ts +++ b/test/prepare.ts @@ -1,12 +1,11 @@ import { fileURLToPath } from 'node:url' import { rm } from 'node:fs/promises' -import { globby } from 'globby' - +import { glob } from 'tinyglobby' import { exec } from 'tinyexec' async function initTesting () { - const dirs = await globby('*', { + const dirs = await glob(['*'], { onlyDirectories: true, cwd: fileURLToPath(new URL('./fixtures', import.meta.url)), absolute: true,