Cross-Platform
repo: bcoe/awesome-cross-platform-nodejs
category: Platforms
Contents
Resources
- [Core Node.js documentation](https://nodejs.org/en/docs/) - Especially the
os,path,fs,processandchild_processmodules. - [Cross-platform Node.js guide](https://github.com/ehmicky/cross-platform-node-guide) - How to write cross-platform Node.js code.
- [Microsoft Node.js Guidelines](https://github.com/Microsoft/nodejs-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.
- nvm / n - Node version manager for macOS/Linux.
- [npm-windows-upgrade](https://github.com/felixrieseberg/npm-windows-upgrade) - Upgrade npm on Windows.
- windows-build-tools - Install C++ Build Tools for Windows using npm.
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 -
gccon Windows. - msys / Git Bash - Bash on Windows.
Databases
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
- rimraf / del - Delete files and folders. Cross-platform.
- 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
fsmodule, especially on Windows. - fs-extra - Combines
graceful-fswith 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.
Signals
- fkill - Kill processes. Cross-platform.
- signal-exit - Cross-platform
exithandler. - 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](https://github.com/nodejs/node-v0.x-archive/issues/7940) - By default,
cmd.exedoes 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.