Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | /* eslint-env node */
'use strict';
import * as glob from 'glob';
import path from 'path';
import fs from 'fs-extra';
import { fileURLToPath } from 'url';
import postcss from 'postcss';
import postcssNesting from 'postcss-nested';
import postcssFor from 'postcss-for';
import postcssEach from 'postcss-each';
import postcssRemoveComments from 'postcss-discard-comments';
import postCssDeprecatedSelector from './plugins/postcss-deprecated-selector.js';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const root = path.resolve(__dirname, '../');
const dist = path.resolve(root, 'dist');
const plugins = [
postcssEach(),
postcssFor(),
postcssNesting(),
postCssDeprecatedSelector(),
postcssRemoveComments(),
];
/**
* Process CSS with PostCSS
*/
const processCss = async (inputPath, outputPath) => {
try {
const css = fs.readFileSync(inputPath, 'utf8');
const result = await postcss(plugins).process(css, { from: inputPath, to: outputPath });
// Ensure the output directory exists
fs.ensureDirSync(path.dirname(outputPath));
fs.writeFileSync(outputPath, result.css);
console.log(
`Processed sub-theme: ${path.relative(root, inputPath)} -> ${path.relative(root, outputPath)}`,
);
} catch (error) {
console.error(`Error processing ${inputPath}:`, error);
}
};
/**
* Build sub-themes by processing CSS and copying to dist
*/
const buildSubThemes = async () => {
console.log('Building sub-themes...');
// Find all CSS files in sub-themes directory
const subThemeFiles = glob.sync(path.resolve(root, 'src/sub-themes/**/*.css'));
if (subThemeFiles.length === 0) {
console.log('No sub-theme files found.');
return;
}
// Process each sub-theme file
for (const filePath of subThemeFiles) {
const relativePath = path.relative(path.resolve(root, 'src/sub-themes'), filePath);
const outputPath = path.resolve(dist, 'sub-themes', relativePath);
await processCss(filePath, outputPath);
}
console.log(`Successfully built ${subThemeFiles.length} sub-theme file(s).`);
};
// Run the build
buildSubThemes().catch(console.error);
|