JSFiddle - React, Tailwind, and code Playground

Dependency test

by tonytlwu

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
<pre id="debug"></pre>

JavaScript

log = function(str){
	document.getElementById('debug').innerHTML = document.getElementById('debug').innerHTML + '\n' + str;
}

console.log = function(x){
	if (typeof x === 'object') {
  	return log(JSON.stringify(x, '', '  '));
  }
	log(x);
}

const dependencies = {
  'jquery': {
      assets: ['path/to/jquery.js'],
      dependencies: []
  },
  'bootstrap': {
      assets: ['path/to/bootstrap.css', 'path/to/bootstrap.js'],
      dependencies: ['jquery']
  },
  'fliplet-core': {
      assets: ['path/to/fliplet-core.css'],
      dependencies: ['jquery', 'bootstrap']
  },
  'fliplet-media': {
      assets: ['path/to/fliplet-media.css'],
      dependencies: ['fliplet-core']
  },
};


function parse(array) {
  let assets = [];
  array.forEach(function(dep){
    if (dependencies.hasOwnProperty(dep)) {
      assets = assets
      // What if there is a circular reference of dependencies? 🤔
      // Will the recursive function create an infinitie loop?
        .concat(parse(dependencies[dep].dependencies))
        .concat(dependencies[dep].assets);
    }
  });
  return _.uniq(assets);
}

// Expected result are all assets required
console.log(parse(['fliplet-core', 'fliplet-media']))