@benpsnyder/analogjs-esm-vite-plugin-nitro
Version:
A Vite plugin for adding a nitro API server
36 lines • 1.44 kB
JavaScript
import { readFileSync } from 'node:fs';
import { join, relative, resolve } from 'node:path';
import { normalizePath } from 'vite';
import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);
export function getMatchingContentFilesWithFrontMatter(workspaceRoot, rootDir, glob) {
// eslint-disable-next-line @typescript-eslint/no-var-requires
const fg = require('fast-glob');
// eslint-disable-next-line @typescript-eslint/no-var-requires
const fm = require('front-matter');
const root = normalizePath(resolve(workspaceRoot, rootDir));
const resolvedDir = normalizePath(relative(root, join(root, glob)));
const contentFiles = fg.sync([`${root}/${resolvedDir}/*`], {
dot: true,
});
const mappedFilesWithFm = contentFiles.map((f) => {
const fileContents = readFileSync(f, 'utf8');
const raw = fm(fileContents);
const filepath = f.replace(root, '');
const match = filepath.match(/\/([^/.]+)(\.([^/.]+))?$/);
let name = '';
let extension = '';
if (match) {
name = match[1];
extension = match[3] || ''; // Using an empty string if there's no extension
}
return {
name,
extension,
path: resolvedDir,
attributes: raw.attributes,
};
});
return mappedFilesWithFm;
}
//# sourceMappingURL=get-content-files.js.map