Detect CPU architecture (handles WoW64, Rosetta 2, ARM64)
npm install cpu-archDetect CPU architecture (not process architecture).
Handles emulation scenarios where process.arch returns the wrong value:
- Windows WoW64: 32-bit Node on 64-bit Windows → returns x64
- macOS Rosetta 2: x64 Node on Apple Silicon → returns arm64
- Windows ARM64: Any Node on ARM Windows → returns arm64
``bash`
npm install cpu-arch
`javascript
const cpuArch = require('cpu-arch');
console.log(cpuArch());
// => 'x64', 'arm64', 'ia32', 'arm', etc.
`
?process.arch returns the architecture of the Node.js binary, not the CPU:
| Scenario | process.arch | cpuArch() |ia32
|----------|----------------|-------------|
| 32-bit Node on 64-bit Windows | | x64 |x64
| x64 Node on Apple Silicon (Rosetta) | | arm64 |arm64
| Native arm64 Node on Apple Silicon | | arm64 |
This matters when selecting native binaries (e.g., @swc/core, Node.js downloads).
| Value | Description |
|-------|-------------|
| x64 | 64-bit Intel/AMD |arm64
| | 64-bit ARM (Apple Silicon, ARM64 Windows/Linux) |ia32
| | 32-bit Intel/AMD |arm
| | 32-bit ARM |ia64
| | Intel Itanium |uname -m
| Other | Raw output (ppc64, s390x, etc.) |
| Platform | Method |
|----------|--------|
| Windows | PROCESSOR_ARCHITEW6432 / PROCESSOR_ARCHITECTURE env vars |sysctl -in sysctl.proc_translated
| macOS | for Rosetta detection |uname -m` |
| Linux |
MIT