1
0
mirror of https://github.com/akveo/eva-icons.git synced 2025-09-03 10:53:08 +02:00
Files
eva-icons/scripts/services/process-scss.js

96 lines
2.1 KiB
JavaScript

/**
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
const path = require('path');
const fs = require('fs-extra');
const config = require('../config');
const fileSystemHelper = require('../helpers/fs-helper');
const genScssRoot = (scssRoot) => {
const buildScss = './eva-icons.scss';
const rootFileContent = `
@import 'eva-icons-variables';
@import 'eva-icons-font';
`;
return new Promise((resolve, reject) => {
fs.writeFile(
path.join(scssRoot, buildScss),
rootFileContent,
'utf8',
(error) => {
if (error) {
reject(error);
}
resolve();
},
);
});
};
const genScssVariables = (scssRoot) => {
const buildScss = './_eva-icons-variables.scss';
const variablesContent = `
$eva-icons-font-path: '../fonts' !default;
$eva-icons-font-family: 'Eva-Icons' !default;
`;
return new Promise((resolve, reject) => {
fs.writeFile(
path.join(scssRoot, buildScss),
variablesContent,
'utf8',
(error) => {
if (error) {
reject(error);
}
resolve();
},
);
});
};
const genScssFont = (scssRoot) => {
const buildScss = './_eva-icons-font.scss';
const buildCss = path.join(config.desPath, 'style/eva-icons.css');
const file = fs.readFileSync(buildCss).toString();
const content = file
.replace(/"/g, '\'')
.replace(/\.\/fonts/g, '#{$eva-icons-font-path}')
.replace(/(font-family: )(.*)(;)/g, '$1#{$eva-icons-font-family}$3');
return new Promise((resolve, reject) => {
fs.writeFile(
path.join(scssRoot, buildScss),
content,
(error) => {
if (error) {
reject(error);
}
resolve();
},
);
});
};
const processScss = () => {
const scssRoot = path.join(config.desPath, '/style/scss');
fileSystemHelper.mkDirByPathSync(scssRoot);
return Promise.all([
genScssRoot(scssRoot),
genScssVariables(scssRoot),
genScssFont(scssRoot),
]);
};
module.exports = processScss;