Setup rollup and build progress

This commit is contained in:
Eric Fennis
2020-08-18 21:31:10 +02:00
parent 70b178215b
commit e38ad92be1
16 changed files with 682 additions and 71 deletions
+13 -14
View File
@@ -1,22 +1,21 @@
import { generateComponentName, resetFile, writeFile } from './helpers';
import path from 'path';
export default function(fileName, outputDirectory, componentGetter, iconNodes) {
import { generateComponentName, resetFile, writeFile, readFile } from './helpers';
export default function(inputEntry, outputDirectory, componentGetter, iconNodes) {
const fileName = path.basename(inputEntry);
// Reset file
resetFile(fileName, outputDirectory);
// Import the component getter
writeFile(
`import ${componentGetter} from '../src/${componentGetter}';\n\n`,
fileName,
outputDirectory,
);
// const content = readFile(inputEntry);
// writeFile(content, fileName, outputDirectory);
const icons = Object.keys(iconNodes);
// Generate Import for Icon VNodes
icons.forEach(iconName => {
const componentName = generateComponentName(iconName);
const importString = `import ${componentName}Node from './icons/${iconName}';\n`;
const importString = `export { default as ${componentName} } from './${iconName}';\n`;
writeFile(importString, fileName, outputDirectory);
});
@@ -25,11 +24,11 @@ export default function(fileName, outputDirectory, componentGetter, iconNodes) {
// Generate export for all the icons
//
// (output): export const myIcon = getComponent(myIconVNode);
icons.forEach(iconName => {
const componentName = generateComponentName(iconName);
const constantString = `export const ${componentName} = ${componentGetter}('${componentName}', ${componentName}Node);\n`;
writeFile(constantString, fileName, outputDirectory);
});
// icons.forEach(iconName => {
// const componentName = generateComponentName(iconName);
// const constantString = `export const ${componentName} = ${componentGetter}('${componentName}', ${componentName}Node);\n`;
// writeFile(constantString, fileName, outputDirectory);
// });
console.log(`Successfully generated ${fileName} file`);
}
+1 -1
View File
@@ -19,7 +19,7 @@ export default function(iconNode, outputDirectory) {
const Node = JSON.stringify(iconNode[icon]);
const element = `
export default ${Node}
export default ${Node};
`;
fs.writeFileSync(location, prettier.format(element, { parser: 'babel' }), 'utf-8');
+7
View File
@@ -19,6 +19,13 @@ export const generateComponentName = iconName =>
export const resetFile = (fileName, outputDirectory) =>
fs.writeFileSync(path.join(outputDirectory, fileName), '', 'utf-8');
/**
* Reads the file contents.
*
* @param {string} path
*/
export const readFile = entry => fs.readFileSync(path.resolve(__dirname, '../../', entry), 'utf-8');
/**
* writes content to a file
*
+7 -3
View File
@@ -8,6 +8,7 @@ import generateExportsFile from './build/generateExportsFile';
const IN_DIR = path.resolve(__dirname, '../icons');
const OUTPUT_DIR = path.resolve(__dirname, '../build');
const SRC_DIR = path.resolve(__dirname, '../src');
if (!fs.existsSync(OUTPUT_DIR)) {
fs.mkdirSync(OUTPUT_DIR);
@@ -22,9 +23,12 @@ const iconVNodes = renderIconNodes(icons);
// Generates iconsNodes files for each icon
generateIconFiles(iconVNodes, OUTPUT_DIR);
const MAIN_OUTPUT_DIR = path.resolve(__dirname, '../build/main');
// Generates entry files for the compiler filled with icons exports
generateExportsFile('main.js', MAIN_OUTPUT_DIR, 'getElement', iconVNodes);
generateExportsFile(
path.join(SRC_DIR, 'icons/index.js'),
path.join(OUTPUT_DIR, 'icons'),
'getElement',
iconVNodes,
);
// generateExportsFile('react.js', OUTPUT_DIR, 'getReactComponent', iconVNodes);
// generateExportsFile('vue.js', OUTPUT_DIR, 'getVueComponent', iconVNodes);