hash-collection-plugin

hash collection plugin with webpack like api.

Usage no npm install needed!

<script type="module">
  import hashCollectionPlugin from 'https://cdn.skypack.dev/hash-collection-plugin';
</script>

README

hash-collection-plugin

A hash #⃣️ collection plugin with webpack like api.

Usage

hash-collection-plugin should be placed after hash generate plugin, then it will generate hash version file of javascript and css according to options or default options.

jsdoc

/**
 * Hash collection plugin.
 * @param {Object} options plugin options.
 * @param {String} [outputPath=''./server/config''] output path of generated version file.
 * @param {String} [options.separator='_'] separator to split key from hashed resource name.
 * @param {Boolean} [options.isMerge=false] flag that mark whether js hash and css hash should be merged together.
 * @param {String} [options.filename='version'] filename of exported version file with prefix css_ and js_.
 * @param {String} [options.extension='json'] extension of exported version file.
 * @param {Function} [options.processor=json-like processor] processor function used to process exported file before it is written to destination folder.
 * @param {String} [options.prefix=''] prefix of each key of hash chunk.
 */

Example

Json-like version config

Code Snippet:

new HashCollectionPlugin()

Output:

// css_version.json
{
  "css/main": "build/css/main_47d448e638e7a8599b08.css",
  "css/login": "build/css/login_4637dac3d936a233aa8b.css"
}

// js_version.json

{
  "js/main": "build/js/main_210fdd3c648cd70c0c2a.js",
  "js/login": "build/js/login_ba156756af82b3268698.js"
}

Java-like version config

Code Snippet:

new HashCollectionPlugin({
  outputPath: '../is-join/is-join-config/src/main/resources',
  isMerge: true,
  filename: 'version',
  extension: 'properties',
  processor: function(data) {
    return Object.keys(data).map(key => `${key.replace(/\//g, '.')}=${data[key]}\n`).join('');
  }
})

Ouput:

// version.properties
css.main=build/css/main_47d448e638e7a8599b08.css
css.login=build/css/login_4637dac3d936a233aa8b.css
js.main=build/js/main_210fdd3c648cd70c0c2a.js
js.login=build/js/login_ba156756af82b3268698.js

TBD