Node.js - Cross-Platform
Resources
5_ENTRIES- Core Node.js documentation
Especially the
os,path,fs,processandchild_processmodules. - 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.
Development environment
5_ENTRIES- 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.
Continuous integration
5_ENTRIES- 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
3_ENTRIES- 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
5_ENTRIESDatabases
1_ENTRIES- Redis
Native port of Redis for Windows.
OS identification
5_ENTRIES- 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
8_ENTRIES- 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
6_ENTRIES- 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
10_ENTRIES- 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
3_ENTRIES- fkill
Kill processes. Cross-platform.
- signal-exit
Cross-platform
exithandler. - human-signals
Human-friendly process signals.
Processes
2_ENTRIES- ps-list
Get running processes.
- process-exists
Check if a process exists.
Streams
2_ENTRIES- noop-stream
Cross-platform
fs.createReadStream('/dev/null'). - random-bytes-readable-stream
Cross-platform
fs.createReadStream('/dev/urandom').
Desktop UI
2_ENTRIES- open
Opens stuff like websites, files, executables. Cross-platform.
- node-notifier
Cross-platform desktop notifications.
Windows registry
3_ENTRIES- 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
3_ENTRIES- cmd.exe unicode woes
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.
See also
1_ENTRIES- awesome-desktop-js
List of tools to build JavaScript applications on the desktop.