Skip to content

posthtml/posthtml-cache

Repository files navigation

posthtml-cache

A posthtml plugin for add nanoid to style & script links and you tags...

Travis Build Statusnodenpm versionDependency StatusXO code styleCoveralls status

Why?

Install

npm i -S posthtml posthtml-cache

Note: This project is compatible with node v10+

Usage

import {readFileSync, writeFileSync} from 'fs';
import posthtml from 'posthtml';
import posthtmlCache from 'posthtml-cache';

const html = readFileSync('input.html', 'utf8');

posthtml()
  .use(posthtmlCache(/* options */))
  .process(html)
  .then(result => {
    writeFileSync('output.html', result.html);
  });

Example

input.html

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <img data-src="logo.svg" alt="">
    <script src="script.js"></script>
  </body>
<html>

output.html

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="style.css?v=4f90d13a42">
  </head>
  <body>
    <img data-src="logo.svg?v=VlLqCweTvn_E1g3XXGMtM" alt="">
    <script src="script.js?v=93ce_Ltuub"></script>
  </body>
<html>

will be added nanoid to all the file link

Options

tags

Type: Array Default: ['script', 'link'] Description: You can also expand the list by adding the tags you need...

attributes

Type: Array Default: ['src', 'href'] Description: You can also expand the list by adding the attributes you need...

exclude

Type: Array Default: [] Description: You can also exclude the list by adding the tags you need...

onlyInternal

Type: Array Default: [] Description: If you have external URL-s, some won't work if you add nanoid to them. If this list is empty, all external links are modified. Otherwise, only the URL-s starting with items in the array (case insensitive) will be modified. E.g. ['https://github.com/'] will add nanoid to all local links and only to https://github.com/*. It won't add nanoid to e.g. http://github.com or https://fonts.google.com. For simplicity, a link is considered external if it starts with a protocol (see is-absolute-url) or with double slash //.