64 lines
1.7 KiB
JavaScript
64 lines
1.7 KiB
JavaScript
const fs = require('fs');
|
|
const sass = require('node-sass');
|
|
const path = require('path');
|
|
const postcss = require('postcss');
|
|
const prettier = require('prettier');
|
|
|
|
const utils = require('./stylelint-utils');
|
|
|
|
const ROOT_PATH = path.resolve(__dirname, '../../..');
|
|
const hashMapPath = path.resolve(__dirname, './utility-classes-map.js');
|
|
|
|
//
|
|
// This creates a JS based hash map (saved in utility-classes-map.js) of the different values in the utility classes
|
|
//
|
|
sass.render(
|
|
{
|
|
data: `
|
|
@import './functions';
|
|
@import './variables';
|
|
@import './mixins';
|
|
@import './utilities';
|
|
`,
|
|
includePaths: [path.resolve(ROOT_PATH, 'node_modules/bootstrap/scss')],
|
|
},
|
|
(err, result) => {
|
|
if (err) {
|
|
return console.error('Error ', err);
|
|
}
|
|
|
|
const cssResult = result.css.toString();
|
|
|
|
// We just use postcss to create a CSS tree
|
|
return postcss([])
|
|
.process(cssResult, {
|
|
// This suppresses a postcss warning
|
|
from: undefined,
|
|
})
|
|
.then((processedResult) => {
|
|
const selectorGroups = {};
|
|
utils.createPropertiesHashmap(
|
|
processedResult.root,
|
|
processedResult,
|
|
null,
|
|
null,
|
|
selectorGroups,
|
|
true,
|
|
);
|
|
|
|
const prettierOptions = prettier.resolveConfig.sync(hashMapPath);
|
|
const prettyHashmap = prettier.format(
|
|
`module.exports = ${JSON.stringify(selectorGroups)};`,
|
|
prettierOptions,
|
|
);
|
|
|
|
fs.writeFile(hashMapPath, prettyHashmap, (e) => {
|
|
if (e) {
|
|
return console.log(e);
|
|
}
|
|
|
|
return console.log('The file was saved!');
|
|
});
|
|
});
|
|
},
|
|
);
|