arm64下自行编译node-sass

背景

一些老旧工程中,使用的是node-sass来处理sass解析,使用的过程中,会从从github下载一个官方编译好的binding.node文件,但是官方并不维护arm64版本的,当在arm64机器编译该工程的时候,会出现无法编译

解决方案

在arm64下编译

步骤

以使用node10编译node-sass 4.14.1示例

docker pull docker.1ms.run/python:2.7
docker run -it --name python27-container -v "$(pwd)":/mnt docker.1ms.run/python:2.7 /bin/bash
git clone https://github.com/amrom66/node-sass.git
git checkout v4.14.1
npm instal -g yarn 
npm config set registry https://registry.npmmirror.com
npm install -g node-gyp --registry https://registry.npmmirror.com
yarn --registry https://registry.npmmirror.com
yarn run build

编译成功后,会在node-sass工程目录下的vendor下出现编译好的文件

使用方式

export SASS_BINARY_PATH="/opt/node-sass/v4.14.1/linux-arm64-64/binding.node"
export npm_config_sass_binary_path="/opt/node-sass/v4.14.1/linux-arm64-64/binding.node"

注意事项

确定好项目所用的node版本,使用或者版本的node去编译node-sass,否则可能出现报错node版本不对应

附录 nodejs 与node-sass对应关系

linux-arm64-64:对应 Node.js 10.x(NODE_MODULE_VERSION=64) linux-arm64-72:对应 Node.js 12.x(NODE_MODULE_VERSION=72) linux-arm64-83:对应 Node.js 14.x(NODE_MODULE_VERSION=83)