43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
/**
|
|
* @file 用于生成 helper 文档中的 class 列表,需要在 scss 目录下运行。
|
|
* 比如 node ../scripts/generate-helper-table.js helper/border/_border-style.scss
|
|
*/
|
|
|
|
const scssFile = process.argv[2];
|
|
const fs = require('fs');
|
|
const css = require('css');
|
|
const execSync = require('child_process').execSync;
|
|
|
|
fs.writeSync(
|
|
fs.openSync('./tmp.scss', 'w'),
|
|
`
|
|
@import './functions';
|
|
@import './variables';
|
|
@import './mixins';
|
|
@import '${scssFile}';
|
|
`
|
|
);
|
|
|
|
let generateCSS = execSync(`../node_modules/.bin/sass tmp.scss`).toString();
|
|
|
|
generateCSS = generateCSS.replace(/\/\*\!markdown[\s\S]*?\*\//g, '');
|
|
|
|
let parseCSS = css.parse(generateCSS);
|
|
|
|
console.log(`| Class | Properties |
|
|
| ----------- | ------------------------ |`);
|
|
|
|
for (let rule of parseCSS.stylesheet.rules) {
|
|
if (rule.type === 'rule') {
|
|
let className = rule.selectors[0].replace('.', '');
|
|
let declarations = rule.declarations
|
|
.map(declaration => {
|
|
return `${declaration.property}: ${declaration.value}`;
|
|
})
|
|
.join('; ');
|
|
console.log(`| ${className} | ${declarations} |`);
|
|
}
|
|
}
|
|
|
|
fs.unlinkSync('./tmp.scss');
|