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']))