mirror of
https://github.com/DanielnetoDotCom/YouPHPTube
synced 2025-10-03 09:49:28 +02:00
63 lines
2 KiB
JavaScript
63 lines
2 KiB
JavaScript
const postcss = require('postcss');
|
|
const cssnext = require('postcss-preset-env');
|
|
const cssnested = require('postcss-nested');
|
|
const cssmqpacker = require('css-mqpacker');
|
|
const cssprettify = require('postcss-prettify');
|
|
const cssclean = require('clean-css');
|
|
const path = require('path');
|
|
const fs = require('fs');
|
|
|
|
function postcssCompiler(config) {
|
|
const { file, dest, minify = true } = config;
|
|
const fileName = path.basename(file);
|
|
const from = path.join(__dirname, '../', file);
|
|
const to = path.join(__dirname, '../', dest, fileName);
|
|
const fileNameMin = path.extname(fileName);
|
|
const min = path.join(__dirname, '../', dest, fileName.replace(fileNameMin, `.min${fileNameMin}`));
|
|
const css = fs.readFileSync(from, 'utf8');
|
|
|
|
return new Promise((resolve, reject) => {
|
|
return postcss([
|
|
cssnested(),
|
|
cssnext({
|
|
stage: 0,
|
|
browsers: ['last 2 version'],
|
|
features: {
|
|
calc: false
|
|
}
|
|
}),
|
|
cssmqpacker({
|
|
sort: true
|
|
}),
|
|
cssprettify()
|
|
])
|
|
.process(css, {
|
|
from,
|
|
to
|
|
})
|
|
.then((result) => {
|
|
if (result && result.css) {
|
|
fs.writeFile(to, result.css, 'utf8', (err) => reject(err));
|
|
|
|
if (minify) {
|
|
const minified = new cssclean({}).minify(result.css);
|
|
fs.writeFile(min, minified.styles, 'utf8', (err) => reject(err));
|
|
|
|
if (result.map) {
|
|
fs.writeFile(to + '.map', result.map, 'utf8', (err) => reject(err));
|
|
}
|
|
}
|
|
|
|
resolve(to);
|
|
} else {
|
|
reject(result);
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
console.log(err);
|
|
reject(err);
|
|
});
|
|
});
|
|
}
|
|
|
|
module.exports = postcssCompiler;
|