若要將原本在 Intel 跑的 SASS 專案跑在 M2 的 Sonoma,將遇到 Node.js 與 Python 版本挑戰。
Symptoms
- 原本專案只能跑在 Node.js 14.21.3,必須使用使用 NVM 安裝 14.21.3,但 14.21.3 只有 Intel 版本,必須重新編譯才能跑在 M2,而編譯又必須在 Python 3.9 以下,但 Sonoma 已經提供更新的 Python 3.11,因此無法編譯出 Node.js 14.21.3
- 原本專案使用 SASS,而它必須使用 Python 2
Solutions
- 先安裝 Anaconda 管理 Python 版本,建立 Python 3.9 環境編譯出 Node.js 14.21.3
- 手動安裝 Python 2
如此就能在 Node.js 14.21.3 + Python 2 環境下執行原有專案
Anaconda
- Anaconda 為 Python 的版本管理工具
- 在 https://www.anaconda.com/download 下載 64-Bit Graphical Installer
- 在 Anaconda.Nagivator 建立 Python 3.9 環境
- Name:建立環境名稱 (不能使用
.
,只能以-
代替) - Packages Python:指定 Python 版本為
3.9.18
- Name:建立環境名稱 (不能使用
- 選擇
環境名稱
,右鍵Open Terminal
開啟 Python 3.9 環境
Node.js 14.21.3
(Python3-9) $ nvm install 14.21.3
- 在 Python 3.9 下使用 NVM 安裝 Node.js 14.21.3
由 NVM 只提供 14.21.3 的 Intel 版本,需重新編譯才能跑在 M2
$ nvm alias default 14.21.3
- 回到 macOS 正常 terminal 下 (不在 Anaconda 的 Python 3.9 下),設定 14.21.3 為 Node.js 預設版本
Python 2
- Homebrew 已經不提供 Python 2,只能從官網 https://www.python.org/downloads/release/python-2718/ 下載 Python 2 手動安裝
$ python2
- 安裝完輸入
python2
會順利出線 prompt
NPM install
$ npm install --python=$(which python2)
- 將下載所有 npm package
- SASS 將為 M2 重新編譯
Conclusion
- 舊一點的 Node.js 版本還需要搭配特定版本的 Python 才能編譯
- Anaconda 為 Python 的版本管理工具
- SASS 所需的 Python 2 需手動安裝,Anaconda 並不支援
npm install
可透過--python
指定 Python 2 實際路徑