Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aminya/patha
File paths library. All you need to work with paths. Tiny drop-in replacement for 'path'. Works in Node, Browser, and Deno.
https://github.com/aminya/patha
browser deno file-path file-paths fs node npm path path-extra path-plus paths
Last synced: 7 days ago
JSON representation
File paths library. All you need to work with paths. Tiny drop-in replacement for 'path'. Works in Node, Browser, and Deno.
- Host: GitHub
- URL: https://github.com/aminya/patha
- Owner: aminya
- License: apache-2.0
- Created: 2022-08-19T07:17:41.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-10-23T21:25:26.000Z (16 days ago)
- Last Synced: 2024-10-24T15:50:30.841Z (15 days ago)
- Topics: browser, deno, file-path, file-paths, fs, node, npm, path, path-extra, path-plus, paths
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/patha
- Size: 596 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
README
patha
> File paths library. All you need to work with paths. Tiny drop-in replacement for 'path'. Works in Node, Browser, and Deno.
- [Install](#install)
- [Usage](#usage)
- [API](#api)
- [`addExeExt` (function)](#addexeext-function)
- [`addNamePrefix` (function)](#addnameprefix-function)
- [`addNameSuffix` (function)](#addnamesuffix-function)
- [`addShExt` (function)](#addshext-function)
- [`addShRelativePrefix` (function)](#addshrelativeprefix-function)
- [`name` (function)](#name-function)
- [`normalizeTrim` (function)](#normalizetrim-function)
- [`removeExt` (function)](#removeext-function)
- [`replaceExt` (function)](#replaceext-function)
- [`isPathInside` (function)](#ispathinside-function)
- [🤝 Contributing](#contributing)## Install
```sh
npm install --save patha
````patha` is tiny and treeshakable.
## Usage
Automatic (depends on your build system)
```js
import * as patha from "patha"
```Node
```js
import * as patha from "patha/dist/index.node.mjs"
```Node CJS
```js
const patha = require("patha/dist/index.node.cjs")
```Browser
```js
import * as patha from "patha/dist/index.browser.mjs"
```Browser Legacy
```js
import * as patha from "patha/dist/index.browser.legacy.js"
```Deno
```js
import * as patha from "patha/dist/index.deno.mjs"
```## API
`patha` is a drop-replacement for `path`, which is explained in [the Nodejs documentation](https://nodejs.org/api/path.html).
```js
import {
basename,
delimiter,
dirname,
extname,
format,
isAbsolute,
join,
normalize,
parse,
posix,
relative,
resolve,
sep,
toNamespacedPath,
win32,
} from "patha"
```Additionally, `patha` supports the following functions:
### `addExeExt` (function)
Add bin extension to the given binary name.
**Parameters:**
- name (`string`) - The name you want to add the shell extension to
- win_ext (`string`) - Defaults to `.exe` on Windows
- other_ext (`string`) - Defaults to `""` On other platforms.**returns:** string
```js
import { addExeExt } from "patha"addExeExt("path/to/file-name") // gives "path/to/file-name.exe" on Windows and "path/to/file-name" on others
```### `addNamePrefix` (function)
Adds a prefix to the start of the name of the given path
**Parameters:**
- path (`string`) - The given file path
- prefix (`string`) - The prefix to add to the start of the file name**returns:** string
```js
import { addNamePrefix } from "patha"addNamePrefix("path/to/file-name.ext", "new-") // gives "path/to/new-file-name.ext"
```### `addNameSuffix` (function)
Adds a suffix to the end of the name of the given path
**Parameters:**
- path (`string`) - The given file path
- suffix (`string`) - The suffix to add to the end of the file name**returns:** string
```js
import { addNameSuffix } from "patha"addNameSuffix("path/to/file-name.ext", "-old") // gives "path/to/file-name-old.ext"
addNameSuffix("path/to/file-name.ext", ".test") // gives "path/to/file-name.test.ext"
```### `addShExt` (function)
Add a native shell extension to the given name.
**Parameters:**
- name (`string`) - The name you want to add the shell extension to
- win_ext (`string`) - `.cmd` on Windows
- other_ext (`string`) - `.sh` On others.**returns:** string
```js
import { addShExt } from "patha"addShExt("path/to/file-name") // gives "path/to/file-name.cmd" on Windows and "path/to/file-name.sh" on others
addShExt("path/to/file-name", ".bat") // gives "path/to/file-name.bat" on Windows and "path/to/file-name.sh" on others
```### `addShRelativePrefix` (function)
Prefix a `./` for unix shell and nothing for `cmd`.
**Parameters:**
- path (`string`) - The given path
**returns:** string
```js
import { addShRelativePrefix } from "patha"addShRelativePrefix("some/file-name") // gives "some/file-name" on Windows and "./some/file-name" on others.
```### `name` (function)
Get the name of the given file path.
By default the file extension is included in the returned name. To remove the extension, set the second parameter to `false`.
**Parameters:**
- path (`string`) - The given file path
- includeExtension (`boolean`) - If the name should include the file extension as well**returns:** string
```js
import { name } from "patha"name("path/to/file.md") // gives "file.md"
name("path/to/file.md", false) // gives "file"
```### `normalizeTrim` (function)
Normalizes the path and removes the trailing slashes.
**Parameters:**
- path (`string`) - The given file path
**returns:** string
```js
import { normalize, normalizeTrim } from "patha"normalizeTrim("/foo/bar//baz/asdf/hello/../") // gives "/foo/bar/baz/asdf"
normalize("/foo/bar//baz/asdf/hello/../") // gives "/foo/bar/baz/asdf/"
```### `removeExt` (function)
Remove a path's extension.
**Parameters:**
- path (`string`) - The given path
**returns:** string
```js
import { removeExt } from "patha"removeExt("some/dir/file.ext") // gives "some/dir/file"
```### `replaceExt` (function)
Replaces the extension from path with extension and returns the updated path string.
Does not replace the extension if path is not a string or is empty.
**Parameters:**
- path (`string`) - The given path
- extension (`string`) - The extension to replace**returns:** any
```js
import { replaceExt } from "patha"replaceExt("path/to/file.md", ".html") // gives "path/to/file.html"
```### `isPathInside` (function)
Check if a path is inside another path.
Note that relative paths are resolved against `process.cwd()` to make them absolute.
This function does not check if the paths exist and it only works with strings.
**Parameters:**
- childPath (`string`)
- parentPath (`string`)**returns:** boolean
```js
import { isPathInside } from "patha"isPathInside("a/b/c", "a/b")
//=> trueisPathInside("a/b/c", "x/y")
//=> falseisPathInside("a/b/c", "a/b/c")
//=> falseisPathInside("/Users/some/dev/aa", "/Users/some")
//=> true
```## 🤝 Contributing
You can sponsor my work here:
https://github.com/sponsors/aminya
Pull requests, issues and feature requests are welcome.
See the [Contributing guide](https://github.com/aminya/patha/blob/master/CONTRIBUTING.md).