Install
npm i -D posthtml-load-config
Usage
npm i -S|-D posthtml-plugin posthtml-plugin ...
Install plugins and save them to your package.json
package.json
Create a posthtml section in package.json.
Root
|– client
|– public
|
|- package.json
{
"posthtml": {
"parser": "posthtml-sugarml",
"from": "/path/to/src/file.sml",
"to": "/path/to/dest/file.html",
"plugins": {
"posthtml-plugin": {}
}
}
}.posthtmlrc
Create a .posthtmlrc file.
Root
|– client
|– public
|
|-.posthtmlrc
|- package.json
{
"parser": "posthtml-sugarml",
"from": "/path/to/src/file.sml",
"to": "/path/to/dest/file.html",
"plugins": {
"posthtml-plugin": {}
}
}posthtml.config.js
Create a posthtml.config.js file.
Root
|– client
|– public
|
|- posthtml.config.js
|- package.json
module.exports = (ctx) => { return { parser: ctx.ext === '.sml' ? 'posthtml-sugarml' : false, from: ctx.from, to: ctx.to, plugins: { 'posthtml-plugin': ctx.plugin } } }
Plugins can be loaded either using an {Object} or an {Array} in config.plugins.
{Object}
module.exports = (ctx) => { return { ...options, plugins: { 'posthtml-plugin': ctx.plugin } } }
{Array}
module.exports = (ctx) => { return { ...options, plugins: [ require('posthtml-plugin')(ctx.plugin) ] } }
⚠️ When using an Array, make sure to
require()them.
Options
parser:
parser: 'posthtml-sugarml'from:
from: 'path/to/src/file.sml'to:
to: 'path/to/dest/file.html'render:
Plugins
Options
{} || null: Plugin loads with defaults.
'posthtml-plugin': {} || null
⚠️
{}must be an empty object
[Object]: Plugin loads with given options.
'posthtml-plugin': { option: '', option: '' }
false: Plugin will not be loaded.
Order
Plugin order is determined by declaration in the plugins section.
{ plugins: { 'posthtml-plugin': {}, // plugins[0] 'posthtml-plugin': {}, // plugins[1] 'posthtml-plugin': {} // plugins[2] } }
Context
When using a function (posthtml.config.js), it is possible to pass context to posthtml-load-config, which will be evaluated while loading your config. By default ctx.env (process.env.NODE_ENV) and ctx.cwd (process.cwd()) are available.
Examples
posthtml.config.js
module.exports = (ctx) => ({ parser: ctx.ext === '.sml' ? 'posthtml-sugarml' : false, from: ctx.from, to: ctx.to, plugins: { posthtml-include: {}, posthtml-expressions: { locals: ctx.locals }, htmlnano: ctx.env === 'production' ? {} : false } })
"scripts": { "build": "NODE_ENV=production node posthtml", "start": "NODE_ENV=development node posthtml" }
import { readFileSync } = require('fs') const posthtml = require('posthtml') const posthtmlrc = require('posthtml-load-config') const sml = readFileSync('index.sml', 'utf8') const ctx = { ext: '.sml' } posthtmlrc(ctx).then(({ plugins, options }) => { posthtml(plugins) .process(sml, options) .then((result) => console.log(result.html)) })
package.json
"scripts": { "build": "NODE_ENV=production gulp", "start": "NODE_ENV=development gulp" }
gulpfile.js
import { task, src, dest } from 'gulp' import plugins from 'gulp-load-plugins' task('pug', () => { const ctx = { locals: {} } return src('src/*.pug') .pipe(posthtml(ctx)) .pipe(rename({ ext: '.html' })) .pipe(dest('dest')) }) task('sml', () => { return src('src/*.sml') .pipe(posthtml()) .pipe(rename({ ext: '.html' })) .pipe(dest('dest')) }) task('html', () => { return src('src/*.html') .pipe(posthtml()) .pipe(dest('dest')) })
npm i -D html-loader posthtml-loader
package.json
"scripts": { "build": "NODE_ENV=production webpack", "start": "NODE_ENV=development webpack-dev-server" }
webpack.config.js
module.exports = (env) => { module: { rules: [ { test: /\.html$/ use: [ 'html-loader', 'posthtml-loader' ] } ] } }