2015-03-18 2 views
1

Я делаю пакет, который предоставляет некоторые дополнительные компоненты ui для начальной загрузки. Я решил зависеть от (awesome) nemo64:bootstrap пакета для библиотеки самонагрузки LESS.Как повторно использовать LESS-переменные bootstrap в метеорном пакете

В моем пакете должны быть предоставлены дополнительные файлы LESS, которые потребуют некоторых из младших переменных начальной загрузки (скажем, @brand-success). Конечный пользователь может очень хорошо настроить эти переменные.

Пакет nemo64:bootstrap содержит файл (custom.bootstrap.import.less) с загрузочными переменными, чтобы пользователь мог включить его там, где это необходимо. Это также место, где пользователь должен настроить свой бутстрап. Поэтому я хотел бы включить это в файл меньшего размера пакета, но я не знаю, из моего пакета, где конечный пользователь будет помещать этот файл.

Я мог предположить, что заданный по умолчанию путь имеет пример в документации пакета nemo64:bootstrap (/client/lib/custom.bootstrap.import.less), но если другой автор пакетов сделает другой выбор, пакеты будут несовместимы.

Есть ли способ не применять определенную файловую архитектуру для конечных пользователей?

ответ

1

Одно из решений для экспорта МЕНЬШЕ файла в качестве актива на сервера и иметь плагин сборки, который скопирует файл в приложении, чтобы пользователь мог @import там, где это необходимо.

Это делается аналогичным образом nemo64:bootstrap. Это a bit hacky и требует разбить пакет в двух разных упаковках. Я объяснил все это gist

0

Насколько я понимаю, пакеты, такие как nemo64 :: bootstrap для компиляции CSS Bootstrap, имеют смысл только из-за того, что по умолчанию компилятор metres по умолчанию компилирует каждый меньше файлов в один файл css. Если имя ваших файлов «Меньше» не начинается с символа подчеркивания (_), оно будет скомпилировано.

При компиляции Bootstrap вы должны только скомпилировать файл bootstrap.less, все остальные файлы являются только частичными. Частицы должны импортироваться и не компилироваться в файлах CSS. Имена файлов неполных файлов Bootstrap не начинаются с подчеркивания, поэтому пакеты, такие как nemo64 :: bootstrap, используются для компиляции Bootstrap и позволяют позже обновлять Bootstrap.

Для вашего пакета вы можете включить Bootstrap Less code your self. Вы также должны встроить компилятор Less и убедиться, что он скомпилирует только ваш основной файл. Пример можно найти по адресу: https://atmospherejs.com/bassjobsen/less-pleeease

После вышеупомянутых шагов вашего главный меньше файла может содержать:

@import "bootstrap"; 
@import "overrides"; 

и так далее

+0

Я не хочу включать в себя код более высокого кода, потому что конечный пользователь, возможно, настроил его более высокий уровень.Или, может быть, я пропустил что-то из вашего ответа. Но спасибо, потому что ваш комментарий приведет меня к другому решению (см. Мой ответ). –

+0

Если настройка означает, что конечный пользователь должен быть включен, чтобы изменить переменные Lessest Bootstrap, вы должны заметить, что Less использует ленивую загрузку и последние объявления для переменных. Таким образом, вы можете переопределить каждую переменную, поместив ее впоследствии. См. Также http://lesscss.org/features/#variables-feature-lazy-loading –

0

Я не совсем уверен, как это сделать. Но вы можете начать с регистрации дескриптора с тем же расширением, что и файл переменных. Это то, что я имею в виду:

var handler = function (compileStep, isLiterate) { 
    // This will get the file path from the handler 
    var variablesFilePath = compileStep._fullInputPath; 
    console.log(variablesFilePath); // print the path to the server when starting 
} 
// handler may also be a callback 
Plugin.registerSourceHandler('bootstrap.import.less', {archMatching: 'web'}, handler); 

Это создаст обработчик, из которого вы сможете использовать API плагинов. Для получения дополнительной информации вы можете обратиться к Meteor API docs.

Сообщите мне, как это работает.