0

Gulp-sass компилирует sass файлы при помощи node-sass, у котрого есть объект с различными опциями.

sass( {
 outputStyle: 'expanded', // стиль вывода
 sourceComments: true, // добавляет комментарий перед селектором в выходном файле о строке где этот селектор в исходном файле.
 indentType: 'tab', // тип оступа
 indentWidth: 1, // величина отступа max-10
 includePaths: ['dev/scss/base/', 'dev/scss/elements/'] // массив путей подключаемых файлов, вроде как должно решать проблему импортов...
 }) 

так вот, есть там объект functions и в документации о нем написано совсем немного:

Это экспериментальная функция LibSass. Используйте с осторожностью.

функции является объект, который содержит набор пользовательских функций, которые могут быть вызваны с помощью Sass файлов составляются. Они могут принимать ноль или более входных параметров и должны возвращать значение либо синхронно (return ...;) или асинхронно (done();). Эти параметры будут экземплярами одного из конструкторов, содержащихся в require('node-sass').types хэшей. Возвращаемое значение должно быть одноним из этих типов. Смотрите список доступных типов ниже: ......

более подробной документации я не нашел, и не совсем понятно для каких целей это можно использовать.
Так же очень интересен аргумент опций importer, насколько я понял он используется для определения пользовательской функции импорта подключаемых файлов. Хочется подробностей.
Знающие люди поделитесь информацией, желательно с примерами :)

задан 21 февр. 2017 в 20:02

1 ответ 1

4
+100

Вот Вам немного не-машинного перевода:

functions - это объект, который содержит набор пользовательских функций, которые могут быть вызваны во время компиляции. Они могут иметь произвольное количество входных параметров, и возвращать результат как синхронно (return), так и асинхронно (done). В качестве входных параметров вы получите инстансы типов (написано конструкторов, т.к. это js), содержащихся в хеше require('node-sass').types. Возвращаемое значение также должно быть инстансом одного из этих типов.

Далее в документе по вашей ссылке следует перечень типов, которые вы можете использовать в качестве входных параметров/возвращаемого значения таких функций, и далее - пример их использования, в котором Вы можете увидеть, как написать такую функцию, и как использовать ее внутри Sass:

sass.renderSync({
 data: '#{headings(2,5)} { color: #08c; }',
 functions: {
 'headings($from: 0, $to: 6)': function(from, to) {
 var i, f = from.getValue(), t = to.getValue(),
 list = new sass.types.List(t - f + 1);
 for (i = f; i <= t; i++) {
 list.setValue(i - f, new sass.types.String('h' + i));
 }
 return list;
 }
 }
});

В этом примере используется javascript-функция headings, которая принимает два параметра типа sass.types.Number, и возвращает список (sass.types.List) строк (sass.types.String) - тегов hX, где X, в данном примере - число от 2 до 5.

Это нужно, чтобы вы могли написать свою функцию на js, и использовать ее из Sass. Удобно. Только лучше не забывать, что функциональность это экспериментальная.

UPD:

А импортер нужен для ручного разрешения импортов, это там тоже подробно описано. Эта функция (или несколько функций), которая принимает путь, который нужно разрезолвать, предыдущий разрезолваный путь и коллбэк, который нужно вызвать с Вашим результатом.

Результат - объект с полем "file", в котором лежит путь к нужному файлу, либо с полем "contents", в котором лежит уже содержимое файла, а не путь к нему.

ответ дан 28 февр. 2017 в 13:42

Ваш ответ

Черновик сохранён
Черновик удалён

Зарегистрируйтесь или войдите

Регистрация через Google
Регистрация через почту

Отправить без регистрации

Необходима, но никому не показывается

Отправить без регистрации

Необходима, но никому не показывается

Нажимая «Отправить ответ», вы соглашаетесь с условиями пользования и подтверждаете, что прочитали политику конфиденциальности.

Начните задавать вопросы и получать на них ответы

Найдите ответ на свой вопрос, задав его.

Задать вопрос

Изучите связанные вопросы

Посмотрите похожие вопросы с этими метками.