Ошибка переключения с grunt compass на libsass

Я работаю над переходом от grunt-contrib-compass к grunt-sass. Однако я вижу, что компилятор libsass дает сбой при некоторых операциях импорта в файле main.scss.

Вот main.scss

@import "breakpoint";
@import "compass/css3";
@import "compass/css3/user-interface";
@import "compass/css3/transform";
@import "compass/utilities/general/clearfix";

И вот ошибка, возникающая при запуске задачи sass:

file to import not found or unreadable: breakpoint
Current dir: example/styles/
Line 1  Column 9  example/styles/main.scss

Кто-нибудь, знакомый с переходом на libsass из компаса, знает, есть ли эквиваленты для этих импортов, которые я мог бы использовать в качестве замены?


person jerome    schedule 05.05.2015    source источник


Ответы (1)


Вам нужно обновить путь импорта для breakpoint, чтобы указать, где находится _breakpoint.scss.

grunt-contrib-compass имеет параметр importPath (например, importPath: '/bower_components'), который

Делает файлы в указанной папке доступными для поиска с помощью директивы Sass @import.

Поскольку он был удален из вашего файла grunt, теперь вы должны использовать полный путь для его импорта:

@import "/bower_components/breakpoint/breakpoint";

Изменить: в libsass есть аналогичная опция loadPath, которая принимает массив путей для поиска файлов в @import.

grunt.initConfig({
  libsass: {
    options: {
      loadPath: ['my/load/path']
    },
    files: {[
        {
            expand: true,
            cwd: 'my/src/dir',
            src: ['**/*.scss'],
            dest: 'dist',
            ext: '.css'
        }
    ]},
  }});

Ваша новая конфигурация для libsass будет включать

Если вы решите этого не делать, вам нужно будет установить точку останова глобально, как вы это сделали для компаса.

gem "breakpoint", "~>2.4.0"
person Rachid    schedule 05.05.2015
comment
Спасибо @Рашид. Я думаю, это вопрос. Существуют ли способы установки для libsass импорта, эквивалентного тому, который мы использовали для компаса? И как это будет работать? Ваш пример gem "breakpoint", "~>2.4.0" для меня не имеет смысла, так как это земля libsass, а не рубиновая земля. Или я что-то упускаю? - person jerome; 05.05.2015
comment
В libsass есть опция loadPath, которая использует массив путей для поиска файлов в @import. (Я обновлю ответ, чтобы включить это). Что касается gem, вы уже использовали compass, что означает, что у вас уже установлен ruby. использование gem для установки breakpoint просто сделает его доступным глобально для всего вашего проекта, как и compass. - person Rachid; 05.05.2015
comment
Да, в рамках этой работы я пытаюсь полностью избавиться от зависимости от драгоценных камней. Я должен был прояснить это раньше. Спасибо! - person jerome; 05.05.2015