diff options
Diffstat (limited to 'packages/astro/src')
-rw-r--r-- | packages/astro/src/content/loaders/glob.ts | 9 | ||||
-rw-r--r-- | packages/astro/src/content/types-generator.ts | 17 | ||||
-rw-r--r-- | packages/astro/src/content/vite-plugin-content-virtual-mod.ts | 4 | ||||
-rw-r--r-- | packages/astro/src/core/build/plugins/plugin-manifest.ts | 2 | ||||
-rw-r--r-- | packages/astro/src/core/build/static-build.ts | 27 | ||||
-rw-r--r-- | packages/astro/src/core/create-vite.ts | 4 |
6 files changed, 20 insertions, 43 deletions
diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index 7299c7ca3..9727ccc08 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -1,10 +1,10 @@ import { promises as fs, existsSync } from 'node:fs'; import { relative } from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url'; -import fastGlob from 'fast-glob'; import { bold, green } from 'kleur/colors'; -import micromatch from 'micromatch'; import pLimit from 'p-limit'; +import picomatch from 'picomatch'; +import { glob as tinyglobby } from 'tinyglobby'; import type { ContentEntryRenderFunction, ContentEntryType } from '../../types/public/content.js'; import type { RenderedContent } from '../data-store.js'; import { getContentEntryIdAndSlug, posixRelative } from '../utils.js'; @@ -236,8 +236,9 @@ export function glob(globOptions: GlobOptions): Loader { logger.warn(`The base directory "${fileURLToPath(baseDir)}" does not exist.`); } - const files = await fastGlob(globOptions.pattern, { + const files = await tinyglobby(globOptions.pattern, { cwd: fileURLToPath(baseDir), + expandDirectories: false, }); if (exists && files.length === 0) { @@ -321,7 +322,7 @@ export function glob(globOptions: GlobOptions): Loader { watcher.add(filePath); const matchesGlob = (entry: string) => - !entry.startsWith('../') && micromatch.isMatch(entry, globOptions.pattern); + !entry.startsWith('../') && picomatch.isMatch(entry, globOptions.pattern); const basePath = fileURLToPath(baseDir); diff --git a/packages/astro/src/content/types-generator.ts b/packages/astro/src/content/types-generator.ts index 92a83367c..c6a362a24 100644 --- a/packages/astro/src/content/types-generator.ts +++ b/packages/astro/src/content/types-generator.ts @@ -1,8 +1,8 @@ import type fsMod from 'node:fs'; import * as path from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url'; -import glob from 'fast-glob'; import { bold, cyan } from 'kleur/colors'; +import { glob } from 'tinyglobby'; import { type ViteDevServer, normalizePath } from 'vite'; import { type ZodSchema, z } from 'zod'; import { zodToJsonSchema } from 'zod-to-json-schema'; @@ -94,21 +94,16 @@ export async function createContentTypesGenerator({ } const globResult = await glob('**', { cwd: fileURLToPath(contentPaths.contentDir), - fs: { - readdir: fs.readdir.bind(fs), - readdirSync: fs.readdirSync.bind(fs), - }, - onlyFiles: false, - objectMode: true, + absolute: true, }); - for (const entry of globResult) { - const fullPath = path.join(fileURLToPath(contentPaths.contentDir), entry.path); + for (const fullPath of globResult) { const entryURL = pathToFileURL(fullPath); if (entryURL.href.startsWith(contentPaths.config.url.href)) continue; - if (entry.dirent.isFile()) { + const stat = fs.statSync(fullPath); + if (stat.isFile()) { events.push({ name: 'add', entry: entryURL }); - } else if (entry.dirent.isDirectory()) { + } else if (stat.isDirectory()) { events.push({ name: 'addDir', entry: entryURL }); } } diff --git a/packages/astro/src/content/vite-plugin-content-virtual-mod.ts b/packages/astro/src/content/vite-plugin-content-virtual-mod.ts index fcb6c4371..7a9295ba5 100644 --- a/packages/astro/src/content/vite-plugin-content-virtual-mod.ts +++ b/packages/astro/src/content/vite-plugin-content-virtual-mod.ts @@ -2,8 +2,8 @@ import nodeFs from 'node:fs'; import { extname } from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url'; import { dataToEsm } from '@rollup/pluginutils'; -import glob from 'fast-glob'; import pLimit from 'p-limit'; +import { glob } from 'tinyglobby'; import type { Plugin, ViteDevServer } from 'vite'; import { AstroError, AstroErrorData } from '../core/errors/index.js'; import { rootRelativePath } from '../core/viteUtils.js'; @@ -280,7 +280,7 @@ export async function generateLookupMap({ { absolute: true, cwd: fileURLToPath(root), - fs, + expandDirectories: false, }, ); diff --git a/packages/astro/src/core/build/plugins/plugin-manifest.ts b/packages/astro/src/core/build/plugins/plugin-manifest.ts index 349c292e3..5c3fa6f4f 100644 --- a/packages/astro/src/core/build/plugins/plugin-manifest.ts +++ b/packages/astro/src/core/build/plugins/plugin-manifest.ts @@ -1,6 +1,6 @@ import { fileURLToPath } from 'node:url'; -import glob from 'fast-glob'; import type { OutputChunk } from 'rollup'; +import { glob } from 'tinyglobby'; import type { Plugin as VitePlugin } from 'vite'; import { getAssetsPrefix } from '../../../assets/utils/getAssetsPrefix.js'; import { normalizeTheLocale } from '../../../i18n/index.js'; diff --git a/packages/astro/src/core/build/static-build.ts b/packages/astro/src/core/build/static-build.ts index 71046956c..9e903696c 100644 --- a/packages/astro/src/core/build/static-build.ts +++ b/packages/astro/src/core/build/static-build.ts @@ -2,8 +2,8 @@ import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url'; import { teardown } from '@astrojs/compiler'; -import glob from 'fast-glob'; import { bgGreen, black, green } from 'kleur/colors'; +import { glob } from 'tinyglobby'; import * as vite from 'vite'; import { type BuildInternals, createBuildInternals } from '../../core/build/internal.js'; import { emptyDir, removeEmptyDirs } from '../../core/fs/index.js'; @@ -247,8 +247,8 @@ async function clientBuild( // Nothing to do if there is no client-side JS. if (!input.size) { // If SSR, copy public over - if (ssr) { - await copyFiles(settings.config.publicDir, out, true); + if (ssr && fs.existsSync(settings.config.publicDir)) { + await fs.promises.cp(settings.config.publicDir, out, { recursive: true, force: true }); } return null; @@ -384,31 +384,12 @@ async function cleanServerOutput( .map((fileName) => fs.promises.rm(new URL(fileName, out))), ); // Copy assets before cleaning directory if outside root - await copyFiles(out, opts.settings.config.outDir, true); + await fs.promises.cp(out, opts.settings.config.outDir, { recursive: true, force: true }); await fs.promises.rm(out, { recursive: true }); return; } } -export async function copyFiles(fromFolder: URL, toFolder: URL, includeDotfiles = false) { - const files = await glob('**/*', { - cwd: fileURLToPath(fromFolder), - dot: includeDotfiles, - }); - if (files.length === 0) return; - return await Promise.all( - files.map(async function copyFile(filename) { - const from = new URL(filename, fromFolder); - const to = new URL(filename, toFolder); - const lastFolder = new URL('./', to); - return fs.promises.mkdir(lastFolder, { recursive: true }).then(async function fsCopyFile() { - const p = await fs.promises.copyFile(from, to, fs.constants.COPYFILE_FICLONE); - return p; - }); - }), - ); -} - async function ssrMoveAssets(opts: StaticBuildOptions) { opts.logger.info('build', 'Rearranging server assets...'); const serverRoot = diff --git a/packages/astro/src/core/create-vite.ts b/packages/astro/src/core/create-vite.ts index 6e10ec38c..04fce7d5a 100644 --- a/packages/astro/src/core/create-vite.ts +++ b/packages/astro/src/core/create-vite.ts @@ -1,6 +1,6 @@ import nodeFs from 'node:fs'; import { fileURLToPath } from 'node:url'; -import glob from 'fast-glob'; +import { convertPathToPattern } from 'tinyglobby'; import * as vite from 'vite'; import { crawlFrameworkPkgs } from 'vitefu'; import { vitePluginActions, vitePluginUserActions } from '../actions/plugins.js'; @@ -124,7 +124,7 @@ export async function createVite( }, }); - const srcDirPattern = glob.convertPathToPattern(fileURLToPath(settings.config.srcDir)); + const srcDirPattern = convertPathToPattern(fileURLToPath(settings.config.srcDir)); const envLoader = createEnvLoader(mode, settings.config); // Start with the Vite configuration that Astro core needs |