Skip to content

Instantly share code, notes, and snippets.

Forked from LeZuse/
Created November 29, 2021 19:36
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save mihaiserban/b8f8c46042c4b04f665e58a373908386 to your computer and use it in GitHub Desktop.
Install node on Apple Silicon M1 both ARM and x86 (Rosetta)

Node.js on Apple Silicon

Node Version Manager ( works perfectly across native node installations as well as emulated Rosetta installations. The trick I am using here is to install one LTS version of node under Rosetta and another stable version as native binary.


  • find a way how to run the same node version on both platforms
# Run the install command from a native (ARM) terminal
# See
curl -o- | bash
# Alternatively install using brew (officially unsupported by nvm):
# brew install nvm
# Don't forget to source the command in your shell profile to make it available in new terminals!
# From Rosetta Terminal (tick checkbox in Terminal right click menu -> Get Info -> Open using Rosetta)
# To verify you are running in Rosetta run:
-> i386
# Install node
nvm install lts/fermium
# Verify node installation
nvm use lts/fermium
node -e 'console.log(process.arch)'
-> x64
# From native Terminal
# To verify you are running natively:
-> arm64
# Install node
nvm install stable
# Verify node installation
nvm use stable
node -e 'console.log(process.arch)'
-> arm64
# To make DX a bit better you can alias your installations:
nvm alias arm stable
# arm -> stable (-> v15.6.0)
nvm alias intel lts/fermium
# intel -> lts/fermium (-> v14.15.4)
# To test aliases:
nvm use arm
# Now using node v15.6.0 (npm v7.4.0)
node -e 'console.log(process.arch)'
-> arm64
nvm use intel
# Now using node v14.15.4 (npm v6.14.10)
node -e 'console.log(process.arch)'
-> x64
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment