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 or posix 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
Did you find this page helpful?