1

尝试使用 导入 npm 包的 scss 时gulp-sass/node-sass/libsass,失败

../../app/assets/stylesheets/_engine.scss
Error: File to import not found or unreadable: bootstrap-material-design/scss/core
       Parent style sheet: /Users/kross/projects/acme/app/assets/stylesheets/_engine.scss
        on line 6 of ../../app/assets/stylesheets/_engine.scss
>> @import "bootstrap-material-design/scss/core";
   ^

版本:

node-sass@3.4.2
gulp-sass@2.2.0

在调查这个问题时,我已经缩小了潜在的外部问题的范围。在此位置替换哪个文件或它的内容(甚至是空内容)并不重要,libsass似乎无法找到嵌套的 @import相对于找到的文件的路径。

在这种情况下:

  1. includePaths: ['../../node_modules']

  2. 编译命令cd spec/dummy && gulp sass目标application.scss

  3. 结构

注意:很明显core是在bootstrap-material-design包里面找到的node_modules

目录结构

很明显_core.scss找到了嵌套文件,但是嵌套文件找不到与其相关的文件。

另请注意,如果 mycwd位于该项目的根目录,我 _can_compile。cwd向下移动spec/dummy并编译,突然找不到这个嵌套的相对文件。

我在这里想念什么?

4

1 回答 1

1

我将includePaths相对路径切换为完全限定的路径,它可以工作。 这似乎是一个错误。

解决方法是确保任何传入的includePaths都是完全限定的目录名称。

这个 gulp-pipeline 配方用于findup执行此操作:

  options: {
    includePaths: [findup('node_modules')] // find any node_modules above the current working directory and return the fully qualified path
  }
于 2016-02-10T20:43:39.160 回答