You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1008 B
31 lines
1008 B
'use strict';
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const R = require('ramda');
|
|
const utils = require('./utils');
|
|
|
|
const isDemo = R.compose(R.test(/\/demo$/i), path.dirname);
|
|
module.exports = function buildDemosList(dirs, outputPath) {
|
|
const mds = utils.findMDFile(dirs);
|
|
const demos = R.filter(isDemo, mds);
|
|
const groupedDemos = R.groupBy((fileName) => {
|
|
const parts = fileName.split(path.sep);
|
|
const demoIndex = parts.indexOf('demo');
|
|
const relativeIndex = path.join(parts.slice(0, demoIndex).join(path.sep), 'index.md');
|
|
return relativeIndex;
|
|
}, demos);
|
|
|
|
let content = 'module.exports = {';
|
|
Object.keys(groupedDemos).forEach((key) => {
|
|
content += `\n '${key}': [`;
|
|
groupedDemos[key].forEach((fileName) => {
|
|
const requirePath = path.relative(path.dirname(outputPath), fileName)
|
|
content += `\n require('antd-md?demo!${requirePath}'),`;
|
|
});
|
|
content += '\n ],'
|
|
});
|
|
content += '\n};';
|
|
|
|
fs.writeFile(outputPath, content);
|
|
};
|
|
|