Convert Path
Convert between POSIX and Windows paths.
Usage
var convertPath = require( '@stdlib/utils/convert-path' );
convertPath( from, to )
Converts between POSIX and Windows paths.
var p = convertPath( 'C:\\foo\\bar', 'posix' );
// returns '/c/foo/bar'
The following output path conventions are supported:
- win32: Windows path convention; e.g.,
C:\\foo\\bar
. - mixed: mixed path convention (Windows volume convention and POSIX path separator); e.g.,
C:/foo/bar
. - posix: POSIX path convention; e.g.,
/c/foo/bar
.
Notes
- A Windows extended-length path cannot be converted to either a
mixed
orposix
path convention, as forward slashes cannot be used as path separators. - If a POSIX path begins with
/[A-Za-z]/
(e.g.,/c/
), the path is assumed to begin with a volume name. - The function makes no attempt to verify that a provided path is valid.
Examples
var convertPath = require( '@stdlib/utils/convert-path' );
var p1;
var p2;
p1 = '/c/foo/bar/beep.c';
p2 = convertPath( p1, 'win32' );
// returns 'c:\foo\bar\beep.c'
p1 = '/c/foo/bar/beep.c';
p2 = convertPath( p1, 'mixed' );
// returns 'c:/foo/bar/beep.c'
p1 = '/c/foo/bar/beep.c';
p2 = convertPath( p1, 'posix' );
// returns '/c/foo/bar/beep.c'
p1 = 'C:\\\\foo\\bar\\beep.c';
p2 = convertPath( p1, 'win32' );
// returns 'C:\\foo\bar\beep.c'
p1 = 'C:\\\\foo\\bar\\beep.c';
p2 = convertPath( p1, 'mixed' );
// returns 'C:/foo/bar/beep.c'
p1 = 'C:\\\\foo\\bar\\beep.c';
p2 = convertPath( p1, 'posix' );
// returns '/c/foo/bar/beep.c'
CLI
Usage
Usage: convert-path [options] [<path>] --out=<output>
Options:
-h, --help Print this message.
-V, --version Print the package version.
-o, --out output Output path convention.
--split sep Delimiter for stdin data. Default: '/\\r?\\n/'.
Notes
If the split separator is a regular expression, ensure that the
split
option is either properly escaped or enclosed in quotes.# Not escaped... $ echo -n $'c:/foo/bar\n./docs/eslint' | convert-path --out=posix --split /\r?\n/ # Escaped... $ echo -n $'c:/foo/bar\n./docs/eslint' | convert-path --out=posix --split /\\r?\\n/
The implementation ignores trailing delimiters.
Examples
$ convert-path /c/foo/bar --out=mixed
c:/foo/bar
To use as a standard stream,
$ echo -n '/c/foo/bar' | convert-path --out=win32
c:\foo\bar
By default, when used as a standard stream, the implementation assumes newline-delimited data. To specify an alternative delimiter, set the split
option.
$ echo -n 'c:/foo/bar\t./docs/eslint' | convert-path --out=win32 --split '\t'
c:\foo\bar
.\docs\eslint