mirror of
https://github.com/lucide-icons/lucide.git
synced 2026-11-15 14:08:49 +00:00
Setup rollup and build progress
This commit is contained in:
@@ -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`);
|
||||
}
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user