18 KiB
18 KiB
Contents
- Resources (#resources)
- Applications (#applications)
- Development environment (#development-environment)
- Continuous integration (#continuous-integration)
- Virtualization (#virtualization)
- Compatibility (#compatibility)
- Databases (#databases)
- Libraries (#libraries)
- OS identification (#os-identification)
- Shell (#shell)
- Environment (#environment)
- Filesystem (#filesystem)
- Signals (#signals)
- Processes (#processes)
- Streams (#streams)
- Desktop UI (#desktop-ui)
- Windows registry (#windows-registry)
- Known issues (#known-issues)
- Support (#support)
Resources
- Core Node.js documentation (https://nodejs.org/en/docs/) - 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 (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 (http://shapeshed.com/writing-cross-platform-node/) - Great tutorial covering many common issues that arise when writing cross-platform code: path creation, script execution, newline characters.
- Cross-platform terminal characters (https://github.com/ehmicky/cross-platform-terminal-characters) - All the characters that work on most terminals and most operating systems.
Applications
Development environment
- Node.js (https://nodejs.org/en/download/) - Node.js installer for various platforms.
- nvm-windows (https://github.com/coreybutler/nvm-windows) - Manage multiple installations of Node.js on a Windows computer.
- nvm (https://github.com/creationix/nvm) / n (https://github.com/tj/n) - Node version manager for macOS/Linux.
- npm-windows-upgrade (https://github.com/felixrieseberg/npm-windows-upgrade) - Upgrade npm on Windows.
- windows-build-tools (https://github.com/felixrieseberg/windows-build-tools) - Install C++ Build Tools for Windows using npm.
Continuous integration
- AppVeyor (http://www.appveyor.com/) - Focused on Windows. Free tiers are available for OSS projects.
- Travis (https://travis-ci.org/) - Windows/macOS/Linux. Free for OSS projects.
- Azure Pipelines (https://azure.microsoft.com/en-us/services/devops/pipelines/) - Windows/macOS/Linux. Free for OSS projects with 10 parallel jobs.
- Github Action (https://github.com/features/actions) - Windows/macOS/Linux. GitHub Actions makes it easy to automate all your software workflows.
- Gitlab CI (https://docs.gitlab.com/ee/ci/) - Windows/macOS/Linux. GitLab CI/CD is a tool built into GitLab for software development.
Virtualization
- ievms (https://github.com/amichaelparker/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 (https://www.virtualbox.org/wiki/Downloads) - General purpose software for running x86 virtual machines.
- Docker (https://www.docker.com/) - Software platform to create, deploy and manage virtualized application containers on a common operating system, with an ecosystem of allied tools.
Compatibility
- Wine (https://www.winehq.org/) - Run Windows API calls on Linux, Mac, BSD and Solaris.
- Cygwin (https://www.cygwin.com/) - Run POSIX on Windows.
- WSL (https://docs.microsoft.com/en-us/windows/wsl/install-win10) - Run the Linux command line on Windows (ELF binary execution, system calls, filesystem, Bash, core utilities, common applications).
- MinGW (http://www.mingw.org/) - gcc on Windows.
- msys (http://www.mingw.org/wiki/msys) / Git Bash (https://gitforwindows.org/) - Bash on Windows.
Databases
- Redis (https://github.com/tporadowski/redis) - Native port of Redis for Windows.
Libraries
OS identification
- is-windows (https://github.com/jonschlinkert/is-windows) - Detect whether the current platform is Windows.
- is-wsl (https://github.com/sindresorhus/is-wsl) - Detect whether current platform is WSL (Windows Subsystem for Linux).
- getos (https://github.com/retrohacker/getos) - Retrieve the current OS, including Linux distribution.
- os-name (https://github.com/sindresorhus/os-name) - Get the name of the current operating system.
- systeminformation (https://github.com/sebhildebrandt/systeminformation) - Hardware/software system information.
Shell
- execa (https://github.com/sindresorhus/execa) - Cross-platform implementation of child_process.{execFile,exec}.
- gulp-execa (https://github.com/ehmicky/gulp-execa) - Cross-platform command execution in Gulp.js.
- cross-spawn (https://github.com/IndigoUnited/node-cross-spawn) - Cross-platform implementation of child_process.spawn().
- shelljs (https://github.com/shelljs/shelljs) - Cross-platform Unix shell commands.
- node-windows (https://github.com/coreybutler/node-windows) - Windows support for Node.js scripts (daemons, eventlog, UAC, etc).
- log-symbols (https://github.com/sindresorhus/log-symbols) - Colored symbols for various log levels with Windows fallbacks.
- figures (https://github.com/sindresorhus/figures) - Unicode symbols with Windows fallbacks.
- clipboardy (https://github.com/sindresorhus/clipboardy) / clipboard-cli (https://github.com/sindresorhus/clipboard-cli) - Cross-platform copy/paste.
Environment
- cross-env (https://github.com/kentcdodds/cross-env) - Set environment variables cross-platform.
- user-home (https://github.com/sindresorhus/user-home) - Get the path to the user home directory. Cross-platform.
- username (https://github.com/sindresorhus/username) - Get the current username.
- osenv (https://github.com/npm/osenv) - Cross-platform environment variables.
- is-elevated (https://github.com/sindresorhus/is-elevated) - Check if the process is running with elevated privileges.
- which (https://github.com/npm/node-which) - Cross-platform implementation of Unix's which.
Filesystem
- rimraf (https://github.com/isaacs/rimraf) / del (https://github.com/sindresorhus/del) - Delete files and folders. Cross-platform.
- make-dir (https://github.com/sindresorhus/make-dir) - Cross-platform mkdir -p.
- readdirp (https://github.com/paulmillr/readdirp) - Recursive version of fs.readdir().
- cpy (https://github.com/sindresorhus/cpy) - Copy files. Cross-platform.
- chokidar (https://github.com/paulmillr/chokidar) - Improved cross-platform file watching.
- graceful-fs (https://github.com/isaacs/node-graceful-fs) - Improves the fs module, especially on Windows.
- fs-extra (https://github.com/jprichardson/node-fs-extra) - Combines graceful-fs with better JSON file reading and promises.
- any-path (https://github.com/bcoe/any-path) - Use Windows and POSIX paths interchangeably when fetching values from an object.
- dev-null-cli (https://github.com/sindresorhus/dev-null-cli) - Cross-platform /dev/null.
- global-cache-dir (https://github.com/ehmicky/global-cache-dir) - Get the global OS-specific cache directory.
Signals
- fkill (https://github.com/sindresorhus/fkill) - Kill processes. Cross-platform.
- signal-exit (https://github.com/tapjs/signal-exit) - Cross-platform exit handler.
- human-signals (https://github.com/ehmicky/human-signals) - Human-friendly process signals.
Processes
- ps-list (https://github.com/sindresorhus/ps-list) - Get running processes.
- process-exists (https://github.com/sindresorhus/process-exists) - Check if a process exists.
Streams
- noop-stream (https://github.com/sindresorhus/noop-stream) - Cross-platform fs.createReadStream('/dev/null').
- random-bytes-readable-stream (https://github.com/sindresorhus/random-bytes-readable-stream) - Cross-platform fs.createReadStream('/dev/urandom').
Desktop UI
- open (https://github.com/sindresorhus/open) - Opens stuff like websites, files, executables. Cross-platform.
- node-notifier (https://github.com/mikaelbr/node-notifier) - Cross-platform desktop notifications.
Windows registry
- node-winreg (https://github.com/fresc81/node-winreg) - Access the Windows registry.
- rage-edit (https://github.com/MikeKovarik/rage-edit) - Access/modify the Windows registry.
- windows-registry-node (https://github.com/CatalystCode/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.exe does not display Unicode characters on Windows.
- spawn issues (https://github.com/nodejs/node-v0.x-archive/issues/2318) - child_process.spawn() behavior is not consistent between Windows and Linux.
- exec() behavior between shells (https://github.com/isaacs/spawn-wrap#contracts-and-caveats) - Depending on the shell being used, e.g., bash vs. dash, child_process.exec() has inconsistent exit behavior.
See also
- awesome-desktop-js (https://github.com/styfle/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 (../../issues).
Everyone is welcome regardless of personal background. We enforce a
Code of conduct (CODE_OF_CONDUCT.md) in order to promote a positive and
inclusive environment.
Contributing
This project was made with ❤️. The simplest way to give back is by starring and
sharing it online.
If the documentation is unclear or has a typo, please click on the page's Edit
button (pencil icon) and suggest a correction.
If you would like to help us fix an error or add more information, please check
our guidelines (contributing.md). Pull requests are welcome!
Thanks go to these wonderful people:
This project follows the all-contributors (https://github.com/all-contributors/all-contributors) specification.
License
!License (https://img.shields.io/github/license/bcoe/awesome-cross-platform-nodejs.svg?color=4cc61e&logo=github) (https://creativecommons.org/licenses/by-sa/4.0/)
crossplatformnodejs Github: https://github.com/bcoe/awesome-cross-platform-nodejs