【发布时间】: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 缓存标志时,它不是。