UNPKG

prettier-plugin-style-order

Version:

Prettier plugin which sorts related style property declarations

47 lines (42 loc) 1.16 kB
const prettier = require('prettier/parser-postcss') const sorter = require('./config/sorter') const resolveCwd = require('resolve-cwd'); const { parsers } = prettier; const languages = Object.keys(parsers); const red = str => '\033[31m' + str + '\033[39m' const requireSyntax = (lang) => { let pkg; try { let path = resolveCwd(`postcss-${lang}`) pkg = require(path) if (pkg === undefined) throw new Error() } catch (e) { console.error( red( `[prettier-plugin-style-order]: Please install "postcss-${lang}" as a dev dependency in order to format .${lang} files`, ), ) process.exit(0); } return pkg; } exports.parsers = {} for (const lang of languages) { const parser = parsers[lang]; exports.parsers[lang] = { ...parser, preprocess(text, options) { if (parser.preprocess) { text = parser.preprocess(text, options) } switch (lang) { case 'scss': return sorter(text, { syntax: requireSyntax(lang) }) case 'less': return sorter(text, { syntax: requireSyntax(lang) }) default: return sorter(text) } }, } }