Skip to content

Instantly share code, notes, and snippets.

@julrich
Created September 29, 2021 18:22
Show Gist options
  • Save julrich/f43c04d95d82573181d7f29dfe077024 to your computer and use it in GitHub Desktop.
Save julrich/f43c04d95d82573181d7f29dfe077024 to your computer and use it in GitHub Desktop.
Create a component map from JSON mapping
const fs = require('fs')
const path = require('path');
const baseExports = require('@kickstartds/base/lib/exports.json');
const blogExports = require('@kickstartds/blog/lib/exports.json');
const contentExports = require('@kickstartds/content/lib/exports.json');
const reducer = (mod) => (prev, [key, value]) => {
if (key !== "index.js" && key.indexOf('/') === -1 && value.length) {
prev += `'${key}': loadable(() => import('@kickstartds/${mod}/lib/${key}/index.js'), { resolveComponent: (exports) => exports.${value[0]} }),\n`
}
return prev
};
const base = Object.entries(baseExports).reduce(reducer("base"), '');
const blog = Object.entries(blogExports).reduce(reducer("blog"), '');
const content = Object.entries(contentExports).reduce(reducer("content"), '');
const dest = path.resolve(__dirname, '../src/components', 'kickstartDSComponentsMap.ts');
const file = `
import loadable from '@loadable/component';
export default {
${base}
${blog}
${content}
};
`;
fs.writeFileSync(dest, file);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment