← Back to Awesome

Sections

Cross-Platform

GitHub repository ↗ synced 2026/8/9

Resources

Core Node.js documentation

Especially the [`os`](https://nodejs.org/api/os.html), [`path`](https://nodejs.org/api/path.html), [`fs`](https://nodejs.org/api/fs.html), [`process`](https://nodejs.org/api/process.html) and [`child_process`](https://nodejs.org/api/child_process.html) modules.

Cross-platform Node.js guide

How to write cross-platform Node.js code.

Microsoft Node.js Guidelines

Tips, tricks, and resources for working with Node.js on Microsoft platforms.

Writing Cross-Platform Node.js

Great tutorial covering many common issues that arise when writing cross-platform code: path creation, script execution, newline characters.

Cross-platform terminal characters

All the characters that work on most terminals and most operating systems.

Applications

Development environment

Node.js

Node.js installer for various platforms.

nvm-windows

Manage multiple installations of Node.js on a Windows computer.

npm-windows-upgrade

Upgrade npm on Windows.

windows-build-tools

Install C++ Build Tools for Windows using npm.

  • nvm / n - Node version manager for macOS/Linux.

Continuous integration

AppVeyor

Focused on Windows. Free tiers are available for OSS projects.

Travis

Windows/macOS/Linux. Free for OSS projects.

Azure Pipelines

Windows/macOS/Linux. Free for OSS projects with 10 parallel jobs.

Github Action

Windows/macOS/Linux. GitHub Actions makes it easy to automate all your software workflows.

Gitlab CI

Windows/macOS/Linux. GitLab CI/CD is a tool built into GitLab for software development.

Virtualization

ievms

Automated installer for the free virtual machine images that Microsoft provides for testing on multiple versions of IE. These images can be useful for cross-platform testing various technologies, however make sure you read and understand Microsofts' licensing.

VirtualBox

General purpose software for running x86 virtual machines.

Docker

Software platform to create, deploy and manage virtualized application containers on a common operating system, with an ecosystem of allied tools.

Compatibility

Wine

Run Windows API calls on Linux, Mac, BSD and Solaris.

Cygwin

Run POSIX on Windows.

WSL

Run the Linux command line on Windows (ELF binary execution, system calls, filesystem, Bash, core utilities, common applications).

MinGW

`gcc` on Windows.

  • msys / Git Bash - Bash on Windows.

Databases

Redis

Native port of Redis for Windows.

Libraries

OS identification

is-windows

Detect whether the current platform is Windows.

is-wsl

Detect whether current platform is WSL (Windows Subsystem for Linux).

getos

Retrieve the current OS, including Linux distribution.

os-name

Get the name of the current operating system.

systeminformation

Hardware/software system information.

Shell

execa

Cross-platform implementation of `child_process.{execFile,exec}`.

gulp-execa

Cross-platform command execution in Gulp.js.

cross-spawn

Cross-platform implementation of `child_process.spawn()`.

shelljs

Cross-platform Unix shell commands.

node-windows

Windows support for Node.js scripts (daemons, eventlog, UAC, etc).

log-symbols

Colored symbols for various log levels with Windows fallbacks.

figures

Unicode symbols with Windows fallbacks.

  • clipboardy / clipboard-cli - Cross-platform copy/paste.

Environment

cross-env

Set environment variables cross-platform.

user-home

Get the path to the user home directory. Cross-platform.

username

Get the current username.

osenv

Cross-platform environment variables.

is-elevated

Check if the process is running with elevated privileges.

which

Cross-platform implementation of Unix's `which`.

Filesystem

make-dir

Cross-platform `mkdir -p`.

readdirp

Recursive version of `fs.readdir()`.

cpy

Copy files. Cross-platform.

chokidar

Improved cross-platform file watching.

graceful-fs

Improves the `fs` module, especially on Windows.

fs-extra

Combines `graceful-fs` with better JSON file reading and promises.

any-path

Use Windows and POSIX paths interchangeably when fetching values from an object.

dev-null-cli

Cross-platform `/dev/null`.

global-cache-dir

Get the global OS-specific cache directory.

  • rimraf / del - Delete files and folders. Cross-platform.

Signals

fkill

Kill processes. Cross-platform.

signal-exit

Cross-platform `exit` handler.

human-signals

Human-friendly process signals.

Processes

ps-list

Get running processes.

process-exists

Check if a process exists.

Streams

noop-stream

Cross-platform `fs.createReadStream('/dev/null')`.

random-bytes-readable-stream

Cross-platform `fs.createReadStream('/dev/urandom')`.

Desktop UI

open

Opens stuff like websites, files, executables. Cross-platform.

node-notifier

Cross-platform desktop notifications.

Windows registry

node-winreg

Access the Windows registry.

rage-edit

Access/modify the Windows registry.

windows-registry-node

Access/modify the Windows registry and set file associations.

Known issues

cmd.exe unicode woes

By default, `cmd.exe` does not display Unicode characters on Windows.

spawn issues

`child_process.spawn()` behavior is not consistent between Windows and Linux.

exec() behavior between shells

Depending on the shell being used, e.g., bash vs. dash, `child_process.exec()` has inconsistent exit behavior.

See also

awesome-desktop-js

List of tools to build JavaScript applications on the desktop.

Support

If you found an error or would like to add more information, don't hesitate to
submit an issue on GitHub.

Everyone is welcome regardless of personal background. We enforce a
Code of conduct in order to promote a positive and
inclusive environment.