| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import path from 'path';
- import fs from "fs-extra";
- import { set } from 'lodash';
- const lodash = { set };
- const generateComponentsScssMap = (foundationPath: string, iconPath?: string) => {
- const foundationComponentList = fs.readdirSync(foundationPath);
- const componentScssMap: { [componentName: string]: { [scssFileName: string]: string } } = {};
- foundationComponentList.forEach(fileName => {
- const fileAbsolutePath = path.join(foundationPath, fileName);
- if (fs.existsSync(fileAbsolutePath) && fs.statSync(fileAbsolutePath).isDirectory()) {
- //in component folder
- const componentPath = fileAbsolutePath;
- const scssFileList = fs.readdirSync(componentPath).filter((fileName) => fileName.endsWith('.scss'));
- scssFileList.forEach(scssFileName => {
- let scssRaw = fs.readFileSync(path.join(componentPath, scssFileName), { encoding: 'utf-8' });
- scssRaw = `\n\n//----${fileName}/${scssFileName} start-----\n` + scssRaw + `\n\n//----${fileName}/${scssFileName} end-----\n`;
- lodash.set(componentScssMap, [fileName, scssFileName], scssRaw);
- });
- }
- });
- if (iconPath) {
- //for react icon
- const stylePath = path.join(iconPath, 'src', 'styles');
- const scssFileList = fs.readdirSync(stylePath).filter((fileName) => fileName.endsWith('.scss'));
- scssFileList.forEach(scssFileName => {
- let scssRaw = fs.readFileSync(path.join(stylePath, scssFileName), { encoding: 'utf-8' });
- scssRaw = `\n\n//----${stylePath}/${scssFileName} start-----\n` + scssRaw + `\n\n//----${stylePath}/${scssFileName} end-----\n`;
- lodash.set(componentScssMap, ['icons', scssFileName], scssRaw);
- });
- }
- return componentScssMap;
- };
- const generateThemeScssMap = (themePath: string) => {
- const fileList = ['_font.scss', '_palette.scss', 'global.scss', 'index.scss', 'local.scss', 'mixin.scss', 'variables.scss'] as const;
- const themeScssMap: { [key in typeof fileList[number]]?: string } = {};
- for (const fileName of fileList) {
- const scssAbsolutePath = path.join(themePath, 'scss', fileName);
- if (fs.existsSync(scssAbsolutePath)) {
- //in theme folder
- themeScssMap[fileName] = fs.readFileSync(scssAbsolutePath, { encoding: "utf8" });
- }
- }
- // console.log(themeScssMap)
- return themeScssMap;
- };
- const generateScssMap = (foundationPath: string, themePath: string, iconPath: string) => {
- return {
- components: generateComponentsScssMap(foundationPath, iconPath),
- theme: generateThemeScssMap(themePath),
- };
- };
- export default generateScssMap;
|