xpipe

v1.0.8
Use cross-platform IPC paths in Node.js.
cross platform cross-platform ipc path unix sockets windows named pipes

xpipe[^1]

Use cross-platform IPC paths in Node.js.

Background

In Node.js - instead of using TCP - you also can take IPC[^2] to communicate to services like

  • web servers (NGINX, Caddy)
  • databases (redis, PostgreSQL, MongoDB)
  • etc.

or to interconnect Node.js apps, Electron frontends/backends and so on.

This can lead to large speed gains.

On unixoid operating systems - e.g. Linux and OS X - we use Unix domain sockets that are referred by file descriptors.

Windows has named pipes for it, living in the root directory of the NPFS[^3], mounted under the special path \\.\pipe\.

To mitigate these differences and to to support writing portable code, xpipe was born...

Installation

npm install xpipe

Usage

// CommonJS (CJS) require
const xpipe = require('xpipe');
// ECMAScript Modules (ESM) import
import xpipe from 'xpipe';

xpipe.prefix

let prefix = xpipe.prefix;
console.log(`prefix:  ${prefix}`);

//   [empty string] on Linux and macOS
//   "//./pipe/" on Windows

xpipe.eq

let ipcPath = xpipe.eq('/tmp/my.sock');
console.log(`ipcPath: ${ipcPath}`);

//   Returns a cross-platform IPC path:
//   "/tmp/my.sock" on Linux and OS X
//   "//./pipe/tmp/my.sock" on Windows

When did Windows start accepting forward slash as a path separator?

Every Windows API/kernel ever has accepted "/" as a path separator. So has every version of MS-DOS beginning with DOS 2.0 (the first version to support subdirectories).

It's only been in command lines that "/" was not allowed when it had already been used as a switch delimiter in MS-DOS 1.0 (introduced by IBM).

This behaviour could be bypassed (at least on modern Windows systems) by including the path in double quotation marks:

  • cd c:/Windows and cd /Windows work[^4]
  • dir ./ /B fails but dir "./" /B works

Further articles:

 

[^1]: xpipe stands for xp (cross-platform) IPC path equalizer
[^2]: inter-process communication, see https://en.wikipedia.org/wiki/Inter-process_communication [^3]: named pipe file system (in-memory)
[^4]: on Windows "/" without a leading drive letter represents the root of the current drive

npm i xpipe

Metadata

  • MIT
  • Whatever
  • Michael Kortstiege
  • released 9/25/2024

Downloads