【问题标题】:Use cached libsass binary when installing grunt-sass安装 grunt-sass 时使用缓存的 libsass 二进制文件
【发布时间】:2017-01-22 09:50:47
【问题描述】:

我有很多项目使用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 文件夹。

【问题讨论】:

  • 我不确定 libsass 是您的问题。您的 .scss 文件是什么样的?有没有提到供应商?
  • 不,node_modules/node-sass 中没有对这个供应商目录的引用。当我使用正常过程安装时,会创建node_modules/node-sass/vendor/darwin-x64-47/binding.node。当我尝试使用 node-sass 缓存标志时,它不是。

标签: node-sass libsass


【解决方案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 时,它使用提供的二进制文件。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-03
      • 2014-07-13
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      • 2011-01-13
      • 2014-08-07
      • 2015-07-28
      相关资源
      最近更新 更多