點燈坊

失くすものさえない今が強くなるチャンスよ

SASS on Sonama M2

Sam Xiao's Avatar 2023-12-18

若要將原本在 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

m201

m202

  • 在 Anaconda.Nagivator 建立 Python 3.9 環境
    • Name:建立環境名稱 (不能使用 .,只能以 - 代替)
    • Packages Python:指定 Python 版本為 3.9.18

m203

  • 選擇 環境名稱,右鍵 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

m204

$ python2
  • 安裝完輸入 python2 會順利出線 prompt

m205

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 實際路徑