安装 grunt-sass 时使用缓存的 libsass 二进制文件

Use cached libsass binary when installing grunt-sass

我有很多项目使用 grunt-sass,这取决于 node-sass,而后者又取决于 libsass。每次我从他们的 git 存储库中检出其中一个项目并 npm install 它们时,libsass 会在我的计算机中再次编译,这个过程会花费很多时间。

node-sass 有提供现有 libsass 二进制文件的方法,所以我不必每次都编译它。 (https://github.com/sass/node-sass#binary-configuration-parameters)

然后我尝试全局安装一个 node-sass npm 包。它编译 libsass 并将其安装在我的 /usr/local/lib/node_modules/node-sass 文件夹中:

npm install -g node-sass

在我的 ~/.npmrc 文件中设置 sass_binary_path 参数后:

sass_binary_path=/usr/local/lib/node_modules/node-sass/vendor/darwin-x64-47/binding.node

当我 npm install 我的项目检出后,libsass 不再编译并且安装成功。 但是当我执行一个使用 grunt-sass 的 grunt 任务时,这是我得到的:

Loading "sass.js" tasks...ERROR
>> Error: ENOENT: no such file or directory, scandir '~/dev/my-project/node_modules/node-sass/vendor'
Warning: Task "sass:dist" not found. Use --force to continue.

Aborted due to warnings.

我在这个缓存过程中做错了什么libsass

--

编辑:

当我使用正常过程安装 npm install 时,会创建 node_modules/node-sass/vendor/darwin-x64-47/binding.node。当我尝试使用 node-sass 缓存标志时,它甚至没有创建 node_modules/node-sass/vendor 文件夹。

我终于能够使用缓存的 node-sass 库了。

首先应从以下位置下载二进制包:https://github.com/sass/node-sass/releases

然后我用一个环境变量指向这个二进制文件。

export SASS_BINARY_PATH="$HOME/dev/bin/darwin-x64-47_binding.node"

使用 npm 安装 node-sass 时,它使用提供的二进制文件。

透明缓存即将在 https://github.com/sass/node-sass/pull/1714 中推出(可能是版本 3.11),我只需要修复 PR。