1 | # 🛣️ pathe
|
2 |
|
3 | > Universal filesystem path utils
|
4 |
|
5 | [![version][npm-v-src]][npm-v-href]
|
6 | [![downloads][npm-d-src]][npm-d-href]
|
7 | [![size][size-src]][size-href]
|
8 |
|
9 | > **❓ Why**
|
10 | >
|
11 | > For [historical reasons](https://docs.microsoft.com/en-us/archive/blogs/larryosterman/why-is-the-dos-path-character), windows followed MS-DOS and using backslash for separating paths rather than slash used for macOS, Linux, and other Posix operating systems. Nowadays, [Windows](https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN) supports both Slash and Backslash for paths. [Node.js's built in `path` module](https://nodejs.org/api/path.html) in the default operation of the path module varies based on the operating system on which a Node.js application is running. Specifically, when running on a Windows operating system, the path module will assume that Windows-style paths are being used. **This makes inconsistent code behavior between Windows and POSIX.**
|
12 | > Compared to popular [upath](https://github.com/anodynos/upath), pathe is providing **identical exports** of Node.js with normalization on **all operations** and written in modern **ESM/Typescript** and has **no dependency on Node.js**!
|
13 |
|
14 | This package is a drop-in replacement of the Node.js's [path module](https://nodejs.org/api/path.html) module and ensures paths are normalized with slash `/` and work in environments including Node.js.
|
15 |
|
16 | ## 💿 Usage
|
17 |
|
18 | Install using npm or yarn:
|
19 |
|
20 | ```bash
|
21 | # npm
|
22 | npm i pathe
|
23 |
|
24 | # yarn
|
25 | yarn add pathe
|
26 |
|
27 | # pnpm
|
28 | pnpm i pathe
|
29 | ```
|
30 |
|
31 | Import:
|
32 |
|
33 | ```js
|
34 | // ESM / Typescript
|
35 | import { resolve } from 'pathe'
|
36 |
|
37 | // CommonJS
|
38 | const { resolve } = require('pathe')
|
39 | ```
|
40 |
|
41 | Read more about path utils from [Node.js documentation](https://nodejs.org/api/path.html) and rest assured behavior is ALWAYS like POSIX regardless of your input paths format and running platform!
|
42 |
|
43 | ### Extra utilties
|
44 |
|
45 | Pathe exports some extra utilities that do not exist in standard Node.js [path module](https://nodejs.org/api/path.html).
|
46 | In order to use them, you can import from `pathe/utils` subpath:
|
47 |
|
48 | ```js
|
49 | import { filename, normalizeAliases, resolveAlias } from 'pathe/utils'
|
50 | ```
|
51 |
|
52 | ## License
|
53 |
|
54 | MIT. Made with 💖
|
55 |
|
56 | Some code used from Node.js project. See [LICENSE](./LICENSE).
|
57 |
|
58 |
|
59 | [npm-v-src]: https://img.shields.io/npm/v/pathe?style=flat-square
|
60 | [npm-v-href]: https://npmjs.com/package/pathe
|
61 |
|
62 | [npm-d-src]: https://img.shields.io/npm/dm/pathe?style=flat-square
|
63 | [npm-d-href]: https://npmjs.com/package/pathe
|
64 |
|
65 | [github-actions-src]: https://img.shields.io/github/workflow/status/unjs/pathe/ci/main?style=flat-square
|
66 | [github-actions-href]: https://github.com/unjs/pathe/actions?query=workflow%3Aci
|
67 |
|
68 | [size-src]: https://packagephobia.now.sh/badge?p=pathe
|
69 | [size-href]: https://packagephobia.now.sh/result?p=pathe
|