Как динамически скомпилировать каталог файлов MDX перед каждой сборкой Vite?Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Как динамически скомпилировать каталог файлов MDX перед каждой сборкой Vite?

Сообщение Anonymous »

Я использую React и Vite для проекта, над которым я работаю. Файлы Out, основанные на метаданных. < /p>
Мой текущий план -: < /p>

Прочитайте все мои файлы MDX в массив < /li>
Проанализировать переднюю массу и решать, какие из них я хочу сохранить < /li>
. /> Уметь им импортировать массив в мое приложение < /li>
< /ol>
Я выяснил все это, кроме последнего шага, но я продолжаю сталкиваться с ошибками. Правильное решение, но я просто не уверен, как экспортировать мои данные MDX из виртуального модуля. < /p>

Код: Выделить всё

import fs from "fs"
import fm from "front-matter"
import { evaluate } from "@mdx-js/mdx"
import * as runtime from "react/jsx-runtime"
import remarkFrontmatter from "remark-frontmatter"
import remarkMdxFrontmatter from "remark-mdx-frontmatter"
import toSource from "tosource"
const path = "./src/posts"
const rawPosts = fs.readdirSync(path).map(fileName => {
const file = fs.readFileSync(`${path}/${fileName}`)
return String(file)
})
const filteredPosts = rawPosts.filter(async file => {
const frontmatter = fm(file)
// use frontmatter to decide which files to keep
return true
})
const finalPosts = await Promise.all(
filteredPosts.map(async file => {
const parsed = await evaluate(file, {
...runtime,
remarkPlugins: [
remarkFrontmatter,
remarkMdxFrontmatter,
],
})
return parsed
})
)
export default function posts() {
const moduleId = "virtual:posts"
const resolvedModuleId = "\0" + moduleId

return {
name: "my-plugin",
resolveId(id) {
if (id === moduleId) {
return resolvedModuleId
}
},
load(id) {
if (id === resolvedModuleId) {
// not sure what to do here
return ?
}
},
}
}

Я уже пробовал json.stringify массив, но функция исчезает при этом, так что же лучше? Должен ли я просто собирать MDX и еще не оценивать его? В этом случае я не знаю, как я бы динамически создавал несколько виртуальных модулей для импорта. Я понимаю, что, вероятно, могу использовать крюк BuildStart для запуска отдельного сценария, но я чувствую, что его можно было достичь с помощью виртуальных модулей, подобных тому, как я пробовал до сих пор.

Подробнее здесь: https://stackoverflow.com/questions/797 ... vite-build
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»