{"id":13483970,"url":"https://github.com/folder/xdg","last_synced_at":"2026-03-11T21:27:38.696Z","repository":{"id":35112748,"uuid":"195047837","full_name":"folder/xdg","owner":"folder","description":"Get cross-platform XDG Base Directories or their equivalents. Works with Linux, Windows, or MacOS.","archived":false,"fork":false,"pushed_at":"2024-04-30T10:21:51.000Z","size":60,"stargazers_count":69,"open_issues_count":2,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-21T12:25:49.078Z","etag":null,"topics":["basedir","folder","fs","home","homedir","javascript","jonschlinkert","node","nodejs","path","xdg","xdg-basedir"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/folder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-03T12:19:46.000Z","updated_at":"2025-08-31T12:05:20.000Z","dependencies_parsed_at":"2024-01-13T18:24:30.064Z","dependency_job_id":"ff8231d2-ccf7-4093-8702-e43c13cae968","html_url":"https://github.com/folder/xdg","commit_stats":{"total_commits":25,"total_committers":1,"mean_commits":25.0,"dds":0.0,"last_synced_commit":"76faa968a95021465bb7f4137282ea75ac56da2b"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/folder/xdg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folder%2Fxdg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folder%2Fxdg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folder%2Fxdg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folder%2Fxdg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/folder","download_url":"https://codeload.github.com/folder/xdg/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folder%2Fxdg/sbom","scorecard":{"id":406037,"data":{"date":"2025-08-11","repo":{"name":"github.com/folder/xdg","commit":"d4c60090ecb4140ed33423c6771558242b2a7b8e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 2/28 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 4 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T21:17:18.038Z","repository_id":35112748,"created_at":"2025-08-18T21:17:18.039Z","updated_at":"2025-08-18T21:17:18.039Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30401879,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T21:02:20.017Z","status":"ssl_error","status_checked_at":"2026-03-11T20:59:32.667Z","response_time":84,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["basedir","folder","fs","home","homedir","javascript","jonschlinkert","node","nodejs","path","xdg","xdg-basedir"],"created_at":"2024-07-31T17:01:17.429Z","updated_at":"2026-03-11T21:27:38.676Z","avatar_url":"https://github.com/folder.png","language":"JavaScript","readme":"# @folder/xdg [![NPM version](https://img.shields.io/npm/v/@folder/xdg.svg?style=flat)](https://www.npmjs.com/package/@folder/xdg) [![NPM monthly downloads](https://img.shields.io/npm/dm/@folder/xdg.svg?style=flat)](https://npmjs.org/package/@folder/xdg) [![NPM total downloads](https://img.shields.io/npm/dt/@folder/xdg.svg?style=flat)](https://npmjs.org/package/@folder/xdg)\n\n\u003e Get cross-platform XDG Base Directories or their equivalents. Works with Linux, Windows (win32), or MacOS (darwin).\n\nPlease consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.\n\n## Install\n\nInstall with [npm](https://www.npmjs.com/):\n\n```sh\n$ npm install --save @folder/xdg\n```\n\n## Usage\n\nAdd the following line of code to your [Node.js](https://nodejs.org/) application:\n\n```js\nconst xdg = require('@folder/xdg');\n```\n\nThe main export is a function that may be called with an options object:\n\n```js\nconst dirs = xdg(/* options */);\nconsole.log(dirs);\n\n/* This output is on MacOS, see examples for Linux and Windows below */\nconsole.log(dirs.config); // =\u003e '/Users/jonschlinkert/Library/Preferences'\nconsole.log(dirs.cache); // =\u003e '/Users/jonschlinkert/Library/Caches'\nconsole.log(dirs.data); // =\u003e '/Users/jonschlinkert/Library/Application Support'\n```\n\nSee [example output](#examples) by platform.\n\n## Options\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eClick to see all available options\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr\u003e\nThe following options are available for customizing behavior and/or testing behavior.\n\n| Option | Type | Description | Default Value |\n| --- | --- | --- | --- |\n| `cachedir`   | `string`   | Override the default `cachedir` | Platform specific, see [below](#examples) |\n| `configdir`  | `string`   | Override the default `configdir` |  |\n| `datadir`    | `string`   | Override the default `datadir` |  |\n| `env`        | `object`   | The `env` object to use for getting paths. | `process.env` |\n| `expanded`   | `boolean`  | Expand paths into an object. See the [Expanded Paths](#expanded-paths) example for more details. | undefined |\n| `homedir`    | `string`   | The user's home directory. | `os.homedir()` |\n| `platform`   | `string`   | The platform to use: `darwin`, `linux`, `win32` | `process.platform` |\n| `resolve`    | `function` | Custom function for resolving paths to each directory. The default function attempts to respect casing in the user's existing directories. | undefined |\n| `runtimedir` | `string`   | Override the default `runtimedir` |  |\n| `subdir`     | `string`   | A sub-directory to join to the path, typically the name of your application. This path is joined differently on each platform. See [examples](#examples). | `xdg` |\n| `tempdir`    | `string`   | The temp directory to use. | `os.tmpdir()` |\n\nSee [examples](#xamples) below.\n\n\u003c/details\u003e\n\n## Examples\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eClick to see example for platform-specific paths\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr\u003e\nGet paths for a specific platform.\n\u003cbr\u003e\n\n```js\nconsole.log(xdg.darwin());\nconsole.log(xdg.linux());\nconsole.log(xdg.win32());\n// or, if you want \"expanded\" paths (see the \"expanded paths\" example)\nconsole.log(xdg({ expanded: true, platform: 'darwin' }));\nconsole.log(xdg({ expanded: true, platform: 'linux' }));\nconsole.log(xdg({ expanded: true, platform: 'win32' }));\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eClick to see example with no options\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr\u003e\nThe following examples show what the paths look like when no options are passed.\n\u003cbr\u003e\n\n```js\nconsole.log(xdg());\n```\n\n### MacOS (darwin)\n\n```js\n{\n  cache: '/Users/jonschlinkert/Library/Caches/xdg',\n  config: '/Users/jonschlinkert/Library/Preferences/xdg',\n  configdirs: [ '/Users/jonschlinkert/Library/Preferences/xdg', '/etc/xdg' ],\n  data: '/Users/jonschlinkert/Library/Application Support/xdg',\n  datadirs: [\n    '/Users/jonschlinkert/Library/Application Support/xdg',\n    '/usr/local/share/',\n    '/usr/share/'\n  ],\n  runtime: '/var/folders/vd/53h736bj0_sg9gk04c89k0pr0000gq/T/xdg'\n}\n```\n\n### Linux\n\n```js\n{\n  cache: '/Users/jonschlinkert/.cache/xdg',\n  config: '/Users/jonschlinkert/.config/xdg',\n  configdirs: [ '/Users/jonschlinkert/.config/xdg', '/etc/xdg' ],\n  data: '/Users/jonschlinkert/.local/share/xdg',\n  datadirs: [\n    '/Users/jonschlinkert/.local/share/xdg',\n    '/usr/local/share/',\n    '/usr/share/'\n  ],\n  runtime: '/var/folders/vd/53h736bj0_sg9gk04c89k0pr0000gq/T/xdg'\n}\n```\n\n### Windows (win32)\n\n```js\n{\n  cache: '/Users/jonschlinkert/AppData/Local/xdg/Cache',\n  config: '/Users/jonschlinkert/AppData/Roaming/xdg/Config',\n  configdirs: [ '/Users/jonschlinkert/AppData/Roaming/xdg/Config' ],\n  data: '/Users/jonschlinkert/AppData/Local/xdg/Data',\n  datadirs: [ '/Users/jonschlinkert/AppData/Local/xdg/Data' ],\n  runtime: '/var/folders/vd/53h736bj0_sg9gk04c89k0pr0000gq/T/xdg'\n}\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eClick to see \"expanded\" paths example\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr\u003e\nRunning the following example returns an object with \"expanded\" paths, where `config` and `configdirs` are converted to `config.home` and `config.dirs`, etc. Additionally, `cwd`, `home` and `temp` paths are added for convenience.\n\u003cbr\u003e\n\n```js\nconsole.log(xdg({ expanded: true, subdir: 'FooBar' }));\n```\n\n**Extra directories**\n\nNote that the `expanded` object includes four additional path properties for convenience:\n\n* `cwd` - set via `options.cwd` or `process.cwd()`\n* `home` - set via `options.homedir` or `os.homedir()`\n* `temp` - set via `options.tempdir` or `os.tmpdir()`\n* `cache.logs` - set at `path.join(cachedir, 'logs')`\n\n### MacOS (darwin)\n\n```js\n{\n  cwd: '/Users/jonschlinkert/dev/@folder/xdg',\n  home: '/Users/jonschlinkert',\n  temp: '/var/folders/vd/53h736bj0_sg9gk04c89k0pr0000gq/T',\n  cache: { \n    home: '/Users/jonschlinkert/Library/Caches/FooBar',\n    logs: '/Users/jonschlinkert/Library/Caches/FooBar/Logs' \n  },\n  config: {\n    home: '/Users/jonschlinkert/Library/Preferences/FooBar',\n    dirs: [ '/Users/jonschlinkert/Library/Preferences/FooBar', '/etc/FooBar' ]\n  },\n  data: {\n    home: '/Users/jonschlinkert/Library/Application Support/FooBar',\n    dirs: [\n      '/Users/jonschlinkert/Library/Application Support/FooBar',\n      '/usr/local/share/',\n      '/usr/share/'\n    ]\n  },\n  runtime: { home: '/var/folders/vd/53h736bj0_sg9gk04c89k0pr0000gq/T/FooBar' }\n}\n```\n\n### Linux\n\n```js\n{\n  cwd: '/Users/jonschlinkert/dev/@folder/xdg',\n  home: '/Users/jonschlinkert',\n  temp: '/var/folders/vd/53h736bj0_sg9gk04c89k0pr0000gq/T',\n  cache: { \n    home: '/Users/jonschlinkert/.cache/FooBar',\n    logs: '/Users/jonschlinkert/.cache/FooBar/Logs'\n  },\n  config: {\n    home: '/Users/jonschlinkert/.config/FooBar',\n    dirs: [ '/Users/jonschlinkert/.config/FooBar', '/etc/FooBar' ]\n  },\n  data: {\n    home: '/Users/jonschlinkert/.local/share/FooBar',\n    dirs: [\n      '/Users/jonschlinkert/.local/share/FooBar',\n      '/usr/local/share/',\n      '/usr/share/'\n    ]\n  },\n  runtime: { home: '/var/folders/vd/53h736bj0_sg9gk04c89k0pr0000gq/T/FooBar' }\n}\n```\n\n### Windows (win32)\n\n```js\n{\n  cwd: '/Users/jonschlinkert/dev/@folder/xdg',\n  home: '/Users/jonschlinkert',\n  temp: '/var/folders/vd/53h736bj0_sg9gk04c89k0pr0000gq/T',\n  cache: { \n    home: '/Users/jonschlinkert/AppData/Local/FooBar/Cache',\n    logs: '/Users/jonschlinkert/AppData/Local/FooBar/Cache/Logs'\n  },\n  config: {\n    home: '/Users/jonschlinkert/AppData/Roaming/FooBar/Config',\n    dirs: [ '/Users/jonschlinkert/AppData/Roaming/FooBar/Config' ]\n  },\n  data: {\n    home: '/Users/jonschlinkert/AppData/Local/FooBar/Data',\n    dirs: [ '/Users/jonschlinkert/AppData/Local/FooBar/Data' ]\n  },\n  runtime: { home: '/var/folders/vd/53h736bj0_sg9gk04c89k0pr0000gq/T/FooBar' }\n}\n```\n\n\u003c/details\u003e\n\n# API\n\nAside from the main export, `xdg()`, several platform-specific methods are exposed to simplify getting paths for specific platforms. Note that you can accomplish the same thing by passing the platform on the options to the main export, e.g. `{ platform: 'linux' }`.\n\nThe main export, and each method, returns an object with the following properties (see the [XDG Base Directories](#xdg-base-directory) docs below for more details on how each property is set):\n\n* `cache`\n* `config`\n* `configdirs`\n* `data`\n* `datadirs`\n* `runtime`\n\n## Main Export\n\n### [xdg](index.js#L17)\n\nGet the XDG Base Directory paths for Linux, or equivalent paths for Windows or MaxOS.\n\n**Params**\n\n* `options` **{Object}**\n* `returns` **{Object}**: Returns an object of paths for the current platform.\n\n### [.darwin](index.js#L42)\n\nGet XDG equivalent paths for MacOS. Used by the main export when `process.platform` is `darwin`. Aliased as `xdg.macos()`.\n\n**Params**\n\n* `options` **{Object}**\n* `returns` **{Object}**: Returns an object of paths.\n\n**Example**\n\n```js\nconst dirs = xdg.darwin();\n// or\nconst dirs = xdg.macos();\n```\n\n### [.linux](index.js#L93)\n\nGet XDG equivalent paths for Linux. Used by the main export when `process.platform` is `linux`.\n\n* `returns` **{Object}**: Returns an object of paths.\n* `returns` **{Object}**: Returns an object of paths.\n\n**Example**\n\n```js\nconst dirs = xdg.linux();\n```\n\n### [.win32](index.js#L145)\n\nGet XDG equivalent paths for MacOS. Used by the main export when `process.platform` is `win32`. Aliased as `xdg.windows()`.\n\n**Params**\n\n* `options` **{Object}**\n* `returns` **{Object}**: Returns an object of paths.\n\n**Example**\n\n```js\nconst dirs = xdg.win32();\n// or\nconst dirs = xdg.windows();\n```\n\n## XDG Base Directories\n\nThis documentation is from the Arch Linux [XDG Base Directory](https://wiki.archlinux.org/index.php/XDG_Base_Directory) docs.\n\n### User directories\n\n* `XDG_CONFIG_HOME`\n\n  - Where user-specific configurations should be written (analogous to `/etc`).\n  - Should default to `$HOME/.config`.\n* `XDG_CACHE_HOME`\n\n  - Where user-specific non-essential (cached) data should be written (analogous to `/var/cache`).\n  - Should default to `$HOME/.cache`.\n* `XDG_DATA_HOME`\n\n  - Where user-specific data files should be written (analogous to `/usr/share`).\n  - Should default to `$HOME/.local/share`.\n* `XDG_RUNTIME_DIR`\n\n  - Used for non-essential, user-specific data files such as sockets, named pipes, etc.\n  - Not required to have a default value; warnings should be issued if not set or equivalents provided.\n  - Must be owned by the user with an access mode of `0700`.\n  - Filesystem fully featured by standards of OS.\n  - Must be on the local filesystem.\n  - May be subject to periodic cleanup.\n  - Modified every 6 hours or set sticky bit if persistence is desired.\n  - Can only exist for the duration of the user's login.\n  - Should not store large files as it may be mounted as a tmpfs.\n\n### System directories\n\n* `XDG_DATA_DIRS`\n\n  - List of directories seperated by `:` (analogous to `PATH`).\n  - Should default to `/usr/local/share:/usr/share`.\n* `XDG_CONFIG_DIRS`\n\n  - List of directories seperated by `:` (analogous to `PATH`).\n  - Should default to `/etc/xdg`.\n\n## About\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eContributing\u003c/strong\u003e\u003c/summary\u003e\n\nPull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eRunning Tests\u003c/strong\u003e\u003c/summary\u003e\n\nRunning and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:\n\n```sh\n$ npm install \u0026\u0026 npm test\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eBuilding docs\u003c/strong\u003e\u003c/summary\u003e\n\n_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_\n\nTo generate the readme, run the following command:\n\n```sh\n$ npm install -g verbose/verb#dev verb-generate-readme \u0026\u0026 verb\n```\n\n\u003c/details\u003e\n\n### Related projects\n\nYou might also be interested in these projects:\n\n* [expand-tilde](https://www.npmjs.com/package/expand-tilde): Bash-like tilde expansion for node.js. Expands a leading tilde in a file path to the… [more](https://github.com/jonschlinkert/expand-tilde) | [homepage](https://github.com/jonschlinkert/expand-tilde \"Bash-like tilde expansion for node.js. Expands a leading tilde in a file path to the user home directory, or `~+` to the cwd.\")\n* [global-modules](https://www.npmjs.com/package/global-modules): The directory used by npm for globally installed npm modules. | [homepage](https://github.com/jonschlinkert/global-modules \"The directory used by npm for globally installed npm modules.\")\n* [global-paths](https://www.npmjs.com/package/global-paths): Returns an array of unique \"global\" directories based on the user's platform and environment. The… [more](https://github.com/jonschlinkert/global-paths) | [homepage](https://github.com/jonschlinkert/global-paths \"Returns an array of unique \"global\" directories based on the user's platform and environment. The resulting paths can be used for doing lookups for generators or other globally installed npm packages. Node.js / JavaScript.\")\n* [normalize-path](https://www.npmjs.com/package/normalize-path): Normalize slashes in a file path to be posix/unix-like forward slashes. Also condenses repeat slashes… [more](https://github.com/jonschlinkert/normalize-path) | [homepage](https://github.com/jonschlinkert/normalize-path \"Normalize slashes in a file path to be posix/unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes, unless disabled.\")\n\n### Author\n\n**Jon Schlinkert**\n\n* [GitHub Profile](https://github.com/jonschlinkert)\n* [Twitter Profile](https://twitter.com/jonschlinkert)\n* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)\n\n### License\n\nCopyright © 2023, [Jon Schlinkert](https://github.com/jonschlinkert).\nReleased under the MIT License.\n\n***\n\n_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on July 24, 2023._","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffolder%2Fxdg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffolder%2Fxdg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffolder%2Fxdg/lists"}