getHierarchy.js 629 B

1234567891011121314151617181920212223242526
  1. const fs = require('fs'),
  2. path = require('path')
  3. const dirTree = (filename) => {
  4. const stats = fs.lstatSync(filename),
  5. info = {
  6. path: filename,
  7. name: path.parse(filename).name
  8. }
  9. if (stats.isDirectory()) {
  10. info.self_type = 'folder'
  11. info.children = fs.readdirSync(filename).map(function (child) {
  12. return dirTree(filename + '/' + child)
  13. })
  14. } else {
  15. // Assuming it's a file. In real life it could be a symlink or
  16. // something else!
  17. info.self_type = 'file'
  18. info.file_type = path.basename(filename).split('.').pop()
  19. }
  20. return info
  21. }
  22. module.exports.dirTree = dirTree