背景
项目中使用了sass,需要安装sass-loader
sass-loader需要安装node-sass
node-sass
Node-sass是一个库,它为Node.js提供了到LibSass的绑定,LibSass是流行的样式表预处理器sass的C版本。 它允许您以惊人的速度并通过连接中间件自动将.scs文件编译为css。
node-sass与node的版本匹配:
| NodeJS | Supported node-sass version | Node Module |
|---|---|---|
| Node 20 | 9.0+ | 115 |
| Node 19 | 8.0+ | 111 |
| Node 18 | 8.0+ | 108 |
| Node 17 | 7.0+, <8.0 | 102 |
| Node 16 | 6.0+ | 93 |
| Node 15 | 5.0+, <7.0 | 88 |
| Node 14 | 4.14+, <9.0 | 83 |
| Node 13 | 4.13+, <5.0 | 79 |
| Node 12 | 4.12+, <8.0 | 72 |
| Node 11 | 4.10+, <5.0 | 67 |
| Node 10 | 4.9+, <6.0 | 64 |
| Node 8 | 4.5.3+, <5.0 | 57 |
| Node <8 | <5.0 | <57 |
安装Node-sass时,gpy检查本地的node版本,再在线获取node-v16.17.1-headers.tar.gz
gyp http GET https://nodejs.org/download/release/v16.17.1/node-v16.17.1-headers.tar.gz
node-v16.17.1-headers.tar.gz解压后可得到一个名为 include 的文件夹,将其放置在 C:\Program Files\nodejs 目录下(具体路径可能根据本机 Node.js 配置而有所不同)。
node-v16.17.1-headers
Node.js是一个基于Chrome V8引擎的JavaScript运行时环境。在安装Node.js时,除了核心的Node.js运行时,还会附带安装一些头文件(headers)和库文件。这些头文件和库文件是供开发者在编译C++扩展时使用的,它们包含了Node.js核心模块的C语言接口和数据结构定义。
node-gyp
Node-gyp 是一个用于编译 Node.js 原生插件的工具。它允许开发者使用 C 或者 C++ 编写 Node.js 的原生扩展模块。Node-gyp 的主要作用是将 C/C++ 代码编译成平台相关的二进制文件,以便在 Node.js 环境中使用。
Node-gyp 是基于 Google 的 GYP(Generate Your Projects)项目生成系统构建的,它提供了一个跨平台的项目生成和构建配置系统。通过 GYP,可以生成不同平台上的构建文件,如 makefile、Visual Studio 项目文件等,从而使得跨平台编译变得更加容易。
使用 Node-gyp,开发者可以在 Node.js 中调用 C/C++ 库,从而实现更高性能的计算或者访问底层操作系统的功能。例如,可以使用 Node-gyp 来编写一个图像处理的库,或者一个网络通信的模块。
node-gyp需要安装对应版本的python和Visual C++构建环境。
Node.js 的 C++ 扩展
Node.js 的 C++ 扩展是一种强大的机制,允许开发者使用 C++ 代码来扩展 Node.js 的功能。这种机制主要是通过编写 C++ 插件,然后将这些插件编译成动态链接库(Windows 上是 .dll 文件,其他平台上通常是 .so 或 .node 文件),最后在 Node.js 中通过 require 函数加载这些插件。
windows-build-tools
windows-build-tools是一个Node模块,它旨在简化在windows操作系统上设置Node.js开发环境的过程。它主要关注于安装编译Node.js本级模块所需的构建工具。
以下是window-build-tools的主要功能:
-
安装Python 2.7:许多Node.js模块依赖于Python进行编译。windows-build-tools会自动安装Python 2.7,确保这些模块能够正常编译。
-
安装Vistual C++ Build Tools:它会安装Microsoft Visual C++ Build Tools,这是编译C++模块所必须的。
-
自动化安装过程,通过npm install --global -- production windows-build-tools命令,用户可以一次性安装所有必需的构建工具,避免了手动下载和安装的繁琐过程。
node-sass可以使用Dart Sass代替
node-sass安装也许会很慢,如果是内网,在线下载node-v16.17.1-headers.tar.gz会失败,可以使用Dart Sass替换。scss-loader官方也是推荐使用Dart Sass。而且在安装node-sass时,也有提示“Node Sass is no longer supported. Please use sassor sass-embedded”