0

我有很多项目使用grunt-sass,这取决于node-sass,这取决于libsass。每次我从他们的 git 存储库中签出其中一个项目时,npm install它们libsass都会再次编译并在我的计算机中进行编译,这个过程需要很多时间。

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

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

npm install -g node-sass

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

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文件夹。

4

2 回答 2

1

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

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

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

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

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

于 2016-09-15T15:49:48.997 回答
1

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

于 2016-09-16T01:28:57.970 回答