123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- const chalk = require('chalk');
- const log = require('./log');
- const fs = require('fs');
- const postcss = require('postcss');
- const postcssCustomProperties = require('postcss-custom-properties');
- const postcssCalc = require("postcss-calc");
- const postcssImport = require('postcss-import');
- const autoprefixer = require('autoprefixer');
- const postcssHeader = require('postcss-header');
- module.exports = (filePath, callback) => {
- // Transform the file.
- fs.readFile(filePath, (err, css) => {
- postcss([
- postcssImport({
- plugins: [
- // On import, remove the comments from variables.pcss.css so they don't
- // appear as useless comments at the top files that import these
- // variables.
- postcss.plugin('remove-unwanted-comments-from-variables', (options) => {
- return css => {
- if (css.source.input.file.indexOf('variables.pcss.css') !== -1) {
- css.walk(node => {
- if (node.type === 'comment') {
- node.remove();
- }
- });
- }
- };
- }),
- ],
- }),
- postcssCustomProperties({
- // Remove converted properties from the generated code. This needs to be
- // set to ensure that CSS minifiers don't remove the generated values.
- preserve: false,
- }),
- postcssCalc,
- autoprefixer({
- // Output without visual cascade for more consistency with existing
- // Drupal CSS.
- cascade: false
- }),
- postcssHeader({
- header: `/*\n * DO NOT EDIT THIS FILE.\n * See the following change record for more information,\n * https://www.drupal.org/node/2815083\n * @preserve\n */\n`,
- }),
- ])
- .process(css, { from: filePath })
- .then(result => {
- callback(result.css);
- })
- .catch(error => {
- log(chalk.red(error));
- process.exitCode = 1;
- });
- });
- };
|