type media videos
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user