interlockjs/interlock

View on GitHub
src/compile/bundles/interpolate-filename.js

Summary

Maintainability
A
0 mins
Test Coverage
import { assign } from "lodash";
import { pluggable } from "pluggable";


/**
 * Given a bundle, determine its ultimate output filepath by replacing
 * supported placeholders with their dynamic equivalents.
 *
 * @param  {Object}  bundle  Late-stage bundle object.
 *
 * @return {Object}          Bundle with interpolated `dest` property.
 */
export default pluggable(function interpolateFilename (bundle) {
  let dest = bundle.dest
    .replace("[setHash]", bundle.setHash)
    .replace("[hash]", bundle.hash);
  if (bundle.module) {
    dest = dest.replace("[primaryModuleHash]", bundle.module.hash);
    dest = dest.replace("[primaryModuleId]", bundle.module.id);
  }

  return assign({}, bundle, { dest });
});