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)