GitHub - posthtml/posthtml-postcss: Use PostCSS with PostHTML.
Install
npm i -D posthtml-postcss
Usage
import {dirname} from 'node:path' import {readFileSync} from 'node:fs' import {fileURLToPath} from 'node:url' import posthtml from 'posthtml' import postcss from 'posthtml-postcss' const postcssPlugins = [] const postcssOptions = {} const filterType = /^text\/css$/ const __filename = fileURLToPath(import.meta.url) const __dirname = dirname(__filename) const filePath = `${__dirname}/index.html` const html = readFileSync(filePath, 'utf8') posthtml([ postcss(postcssPlugins, postcssOptions, filterType) ]) .process(html, {from: filePath}) .then((result) => console.log(result.html))
If you don't pass any arguments to posthtml-postcss, it will try to use your project's PostCSS configuration (see postcss-load-config).
Notice that we're setting the option from when calling process. posthtml-postcss forwards this to PostCSS, which is useful for syntax error messages. (postcss-cli and gulp-posthtml are setting from automatically.)
Example
import posthtml from 'posthtml' import postcss from 'posthtml-postcss' import autoprefixer from 'autoprefixer' const postcssPlugins = [ autoprefixer({ browsers: ['last 2 versions'] }) ] const postcssOptions = {} const filterType = /^text\/css$/ const html = ` <style>div { display: flex; }</style> <div style="display: flex;">Text</div> ` posthtml([ postcss(postcssPlugins, postcssOptions, filterType) ]) .process(html) .then(result => console.log(result.html))
Output:
<style> div { display: -webkit-flex;display: -ms-flexbox;display: flex; } </style> <div style="display: -webkit-flex;display: -ms-flexbox;display: flex;"> Text </div>