Генерация динамических c маршрутов в Nuxt. js из основного материала в файлах уценки из других каталогов содержимого - PullRequest
0 голосов
/ 30 мая 2020

У меня есть файлы уценки в следующих структурах папок:

content
-- blog
-- guest
-- random

Каждый файл уценки имеет массив tags начального уровня. Я хотел бы создать путь /tags/_id.vue Dynami c для каждого тега, который я использую, но я не уверен, как написать для этого функцию generate.

Вот что я m для моей текущей функции:

const markdownPaths = [
    'blog',
    'guest',
    'random'
];
function dynamicMarkdownRoutes() {
    return [].concat(
        ...markdownPaths.map(mdPath => {
            return glob.sync(`${mdPath}/*.md`, { cwd: 'content' })
            .map(filepath => `${mdPath}/${path.basename(filepath, '.md')}`);
        })
    );
}
export default {
    // a bunch of other stuff
    ....

    generate: {
        routes: dynamicMarkdownRoutes()
    },
}

... который отлично работает для создания динамических c маршрутов из самих файлов уценки, но я не могу понять, как расширить эту функцию, чтобы включить маршруты из парадной.

1 Ответ

0 голосов
/ 29 июня 2020

Я не мог понять, как читать вводную часть из команды npm run generate Nuxt, поэтому вместо этого я решил использовать процесс gulp для генерации файлов уценки из первой части. Теперь команда npm run generate может обнаруживать вновь созданные файлы уценки из каталога content/tags и создавать для них индексные файлы, как это было бы с моими обычными сообщениями.

Для справки, вот процесс gulp:

const markdownToJSON  = require('gulp-markdown-to-json'),
      marked          = require('marked'),
      file            = require('gulp-file');

function meta(){
    return src('content/blog')
        .pipe(markdownToJSON(marked, function(d){
            if(d.tags){
                var tags = [];
                for(c in d.tags){
                    var e = d.tags[c].toLowerCase();
                    saveMD(e+'.md', 'content/tags');
                }
            }
        }));
}

function saveMD(src,destination){
    return file(src, '')
        .pipe(dest(destination));
}
...