UNPKG

postcss-hash

Version:

PostCSS plugin to replace output file names with HASH algorithms (md5, sha256, sha512, etc) and string length of your choice - for cache busting

94 lines (70 loc) 2.73 kB
# PostCSS Hash [![Build Status][ci-img]][ci] [PostCSS] plugin to replace output file names with **HASH** algorithms (`md5`, `sha256`, `sha512`, etc) and string length of your choice - for cache busting. ```sh # input postcss input.css -o output.css # output output.a1b2c3d4e5.css # ./manifest.json { "output.css": "output.a1b2c3d4e5.css", } ``` ```sh # input postcss css/in/*.css --dir css/out/ # output file1.a516675ef8.css file2.aa36634cc4.css file3.653f682ad9.css file4.248a1e8f9e.css file5.07534806bd.css # ./manifest.json { "file1.css": "file1.a516675ef8.css", "file2.css": "file2.aa36634cc4.css", "file3.css": "file3.653f682ad9.css", "file4.css": "file4.248a1e8f9e.css", "file5.css": "file5.07534806bd.css" } ``` ## Usage ```js // postcss.config.js module.exports = (ctx) => ({ plugins: { 'postcss-hash': { algorithm: 'sha256', trim: 20, manifest: './manifest.json' }, } }); ``` ## Options ### algorithm `(string, default: 'md5')` Uses node's inbuilt [crypto] module. Pass any `digest algorithm` that is supported in your environment. Possible values are: `md5`, `md4`, `md2`, `sha`, `sha1`, `sha224`, `sha256`, `sha384`, `sha512`. ### includeMap `(boolean, default: false)` Setting `includeMap` to `true` will allow postcss-hash to hash the name of the sourcemap, as well hash the CSS _including_ the `sourceMappingURL` comment. You can set this option to true if you care about the hashed fingerprints matching the contents of the CSS file, and don't mind a performance hit of regenerating the CSS twice. ### trim `(number, default: 10)` Hash's length. ### manifest `(string, default: './manifest.json')` Will output a `manifest` file with `key: value` pairs. ### name `(function, default: ({dir, name, hash, ext}) => path.join(dir, name + '.' + hash + ext) Pass a function to customise the name of the output file. The function is given an object of string values: - dir: the directory name as a string - name: the name of the file, excluding any extensions - hash: the resulting hash digest of the file - ext: the extension of the file **NOTE:** 1. The values will be either appended or replaced. If this file needs be recreated on each run, you'll have to manually delete it. 2. `key`s are generated with files' `basename`. If you have `./input/A/one.css` & `./input/B/one.css`, only the last entry will exist. See [PostCSS] docs for examples for your environment. ``` Version: 0.2.0 Updated on: August 29, 2017 ``` [PostCSS]: https://github.com/postcss/postcss [ci-img]: https://travis-ci.org/dacodekid/postcss-hash.svg [ci]: https://travis-ci.org/dacodekid/postcss-hash [crypto]: https://nodejs.org/api/crypto.html