platform-folders
Version:
Module to get platform dependent folders (e.g. documents, downloads, config)
55 lines (47 loc) • 3.56 kB
Markdown
# platform-folders
Node.js bindings for [sago007/PlatformFolders](https://github.com/sago007/PlatformFolders) (requires Node.js 8 or 10+)
This library is inspired by Electrons [app.getPath](https://github.com/electron/electron/blob/master/docs/api/app.md#appgetpathname) 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:
```javascript
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:
```javascript
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).