JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 34283
  • Score
    100M100P100Q153381F
  • License MIT

Use PostCSS with PostHTML

Package Exports

    Readme

    PostHTML

    PostCSS Plugin

    Use PostCSS with PostHTML

    Version Build License Downloads

    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>