summaryrefslogtreecommitdiff
path: root/packages/astro/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/astro/src')
-rw-r--r--packages/astro/src/content/loaders/glob.ts9
-rw-r--r--packages/astro/src/content/types-generator.ts17
-rw-r--r--packages/astro/src/content/vite-plugin-content-virtual-mod.ts4
-rw-r--r--packages/astro/src/core/build/plugins/plugin-manifest.ts2
-rw-r--r--packages/astro/src/core/build/static-build.ts27
-rw-r--r--packages/astro/src/core/create-vite.ts4
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