Logo
> A wrapper around the path module that always normalizes to POSIX (including converting backslashes to forward slashes) Downloads per month NPM version Dependencies Contributors code style: prettier License: MIT Support on Patreon ## Description The built-in [`path` module](https://nodejs.org/api/path.html) in Node.js provides utilities for working with file and directory paths in Node.js. The default operation of it varies [based on the operating system](https://nodejs.org/api/path.html#path_windows_vs_posix) on which Node.js is running. While this is generally a good thing, there are situations where you might want to normalize paths such that they always follow POSIX formatting. While the `path` module _does_ export POSIX specific implementations via the [`path.posix`](https://nodejs.org/api/path.html#path_path_posix) property, it is not really sufficient, as it doesn't convert windows-style paths with backslashes into forward slashes. `crosspath` is a drop-in replacement for `path` that wraps it to ensure that paths are always POSIX-formatted, including on Windows. You can still access the underlying implementations via the `native` property, which is useful when you do need to convert back into OS-specific paths, for example when writing to the file system ### Features - A drop-in replacement - Tiny as it relies on the implementations of the underlying path module ## Backers | Bubbles | Christopher Blanchard | Ideal Postcodes | Xerox | Trent Raymond | scrubtheweb | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | [Bubbles](https://usebubbles.com)
Twitter: [@usebubbles](https://twitter.com/usebubbles) | [Christopher Blanchard](https://github.com/cblanc) | [Ideal Postcodes](https://github.com/ideal-postcodes) | [Xerox](https://www.xerox.com) | [Trent Raymond](https://changelog.me) | [scrubtheweb](https://scrubtheweb.com) | ### Patreon Patrons on Patreon ## Table of Contents - [Description](#description) - [Features](#features) - [Backers](#backers) - [Patreon](#patreon) - [Table of Contents](#table-of-contents) - [Install](#install) - [npm](#npm) - [Yarn](#yarn) - [pnpm](#pnpm) - [Usage](#usage) - [Contributing](#contributing) - [Maintainers](#maintainers) - [FAQ](#faq) - [Why not simply use `path.posix` always? Isn't this library redundant?](#why-not-simply-use-pathposix-always-isnt-this-library-redundant) - [License](#license) ## Install ### npm ``` $ npm install crosspath ``` ### Yarn ``` $ yarn add crosspath ``` ### pnpm ``` $ pnpm add crosspath ``` ## Usage Simply import what you need, exactly as you would with the `path` module: ```ts // Import just what you need: import {join, relative} from "crosspath"; // or simply: import path from "crosspath"; // Becomes 'C:/foo/bar' path.join("C:\\foo", "\\bar"); // Becomes '../bar' path.relative("C:\\foo", "C:\\bar"); ``` If you want to use the native path helpers and constants without the POSIX normalization, these are all accessible via the `path.native` property: ```ts import path from "crosspath"; // Becomes 'C:\foo\bar' on Windows and C:\foo/\bar on POSIX-systems path.native.join("C:\\foo", "\\bar"); // Becomes '..\bar' on Windows and ../C:\bar on POSIX-systems path.native.relative("C:\\foo", "C:\\bar"); ``` This can be useful when you _do_ want the paths to respect the OS convention, such as when you interact with the file system. ## Contributing Do you want to contribute? Awesome! Please follow [these recommendations](./CONTRIBUTING.md). ## Maintainers | Frederik Wessberg | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [Frederik Wessberg](mailto:frederikwessberg@hotmail.com)
Twitter: [@FredWessberg](https://twitter.com/FredWessberg)
Github: [@wessberg](https://github.com/wessberg)
_Lead Developer_ | ## FAQ ### Why not simply use `path.posix` always? Isn't this library redundant? No, not quite (but close). While it is true that `path.posix` can be used from Windows, it has the fundamental shortcoming that it [doesn't convert backslashes into forward slashes](https://nodejs.org/api/path.html#path_path_normalize_path). This is not a mistake, but rather a design decision. This library makes another decision and unifies the behavior between the two approaches to make it easier to build cross-platform libraries and tools. ## License MIT © [Frederik Wessberg](mailto:frederikwessberg@hotmail.com) ([@FredWessberg](https://twitter.com/FredWessberg)) ([Website](https://github.com/wessberg))