Skip to content

kingjan1999/platform-folders

Repository files navigation

platform-folders

Node.js bindings for sago007/PlatformFolders (requires Node.js 8 or 10+)

This library is inspired by Electrons app.getPath used for getting so called "special directories". These directories, like "Documents", "Downloads" and "AppData" are platform dependent. This Node Native Addon uses a C++ libary (linked above) to resolve the paths on Windows, "Linux" and Mac OS X.

Usage

You can either use the "Electron-Style" by calling the default export:

import getPath from 'platform-folders';
console.log(getPath('downloads'));

Following names are supported:

  • home Home folder (e.g. /home/<Username>, c:\Users\<Username>, /Users/<Username>)
  • appData Per-User Application Directory (e.g. /home/<Username>/.local/share, c:\Users\<Username>\AppData\Roaming, /Users/<Username>/Library/Application Support)
  • userData Directory for storing config files (e.g. /home/<Username>/.config, c:\Users\<Username>\AppData\Roaming, /Users/<Username>/Library/Application Support)
  • desktop Desktop directory (e.g. /home/<Username>/Schreibtisch (on a German system), c:\Users\<Username>\Desktop, /Users/<Username>/Desktop)
  • documents Documents directory (e.g. /home/<Username>/Dokumente (on a German system), c:\Users\<Username>\Documents, /Users/<Username>/Documents)
  • Downloads Downloads directory (e.g. /home/<Username>/Downloads, c:\Users\<Username>\Downloads, /Users/<Username>/Downloads)
  • music Music directory (e.g. /home/<Username>/Musik (on a German system), c:\Users\<Username>\Music, /Users/<Username>/Music)
  • pictures Pictures directory (e.g. /home/<Username>/Bilder (on a German system), c:\Users\<Username>\Pictures, /Users/<Username>/Pictures)
  • videos Videos directory (e.g. /home/<Username>/Videos, c:\Users\<Username>\Videos, /Users/<Username>/Videos)
  • cache Cache directory (e.g. /home/<Username>/.cache, c:\Users\<Username>\AppData\Local, /Users/<Username>/Library/Caches)
  • state State directory (e.g. /home/<Username>/.local/state, c:\Users\<Username>\AppData\Local, /Users/<Username>/Library/Application Support)
  • savegames Directory for savegames (e.g. /home/<Username>/.local/share, c:\Users\<Username>\SavedGames, /Users/<Username>/Library/Application Support)

Alternatively you can use the named exports:

import {getDownloadsFolder} from 'platform-folders';
console.log(getDownloadsFolder());
Key Method
home getHomeFolder()
appData getDataHome()
appdata getDataHome()
userData getConfigHome()
desktop getDesktopFolder()
documents getDocumentsFolder()
downloads getDownloadsFolder()
music getMusicFolder()
pictures getPicturesFolder()
videos getVideosFolder()
cache getCacheFolder()
state getStateFolder()
savegames getSaveGamesFolder()

Following paths can not be used with getPath (as they return arrays), but can be called using the exported function:

  • getDataFolders Additional global data folders (e.g. C:\ProgramData, /usr/share/)
  • getConfigFolders Additional global data folders (e.g. C:\ProgramData, /etc/xdg/)

These functions are not supported for OS X (they will return an empty array).