Как выполнить зависимость Bower Bootstrap с моей собственной LESS-собранной версией

Я работаю над проектом AngularJS (yo angular scaffolding), который использует Grunt, Bootstrap и некоторые вещи, которые зависят от Bootstrap (например, angular-strap). У меня есть собственный файл variables.less для Bootstrap, который я пытаюсь использовать.

Хотя у меня определенно может быть собственная копия Bootstrap 3 и я могу скомпилировать свой собственный bootstrap.css, используя мой файл variables.less, задача bowerInstall в Grunt всегда гарантирует, что мой файл index.html обновляется, чтобы также указывать на пакет Bower Bootstrap. CSS-файлы.

Bootstrap уже представляет собой довольно тяжелую полезную нагрузку, поэтому мне определенно не нужны две из них - что я и вижу. Когда я собираю: dist с помощью Grunt (и, в конечном итоге, с моим процессом сборки Cordova), я вижу, что включены как моя копия Bootstrap, так и Bower. Это вызывает у меня проблемы.

Так что мне нужен способ заставить Bower согласиться с тем, что у меня есть Bootstrap 3, и игнорировать эту зависимость для других компонентов Bower. В противном случае я вынужден поместить свой собственный файл LESS в папку Bower Bootstrap, что является недопустимым.

Есть предположения?

ОБНОВИТЬ:

Ответ Робина ниже отлично справился с моей проблемой. Чего я не знал, так это того, что у меня также была проблема с cssmin в Grunt. Несмотря на то, что в моем index.html больше не было перечисленных моих CSS Bootstrap и CSS Bower (из-за решения Робина), я все же получил main.css, который включал две копии минифицированного bootstrap.css. Один был основан на моей необработанной версии, другой - из папки .tmp, которая использовалась Grunt's autoprefixer и rev задачами. Как был настроен мой index.html, cssmin вытаскивал обработанную версию bootstrap.css в .tmp, а также мой оригинал, что приводило к двойному уменьшению размера файла. Рассматриваемая строка в index.html выглядела так:

<!-- build:css({.tmp,app}) styles/main.css -->

Изменение его на это устранило проблему удвоения:

<!-- build:css(.tmp) styles/main.css -->

Хотя это все еще оставило меня с нарушением глификонов, что само по себе является другой проблемой, с которой я частично справился, больше не уменьшая bootstrap.css.


person Michael Oryl    schedule 08.05.2014    source источник


Ответы (2)


В пакете grunt-bower-install есть опция exclude для этого. Как ни странно, его документация является частью проекта wiredep (который используется grunt-bower-install).

Таким образом, вы можете просто исключить Boostrap CSS, добавив следующую опцию в задачу bowerInstall:

exclude: [ 'bower_components/bootstrap/dist/css/bootstrap.css' ]

Возможно, вам также нужно будет исключить bootstrap.min.css. Или даже используйте регулярное выражение, например:

exclude: [ /bootstrap/ ]
person Robin Pokorny    schedule 08.05.2014
comment
Пока не повезло. Вот моя задача в Gruntfile: bowerInstall: {app: {src: ['‹% = yeoman.app%› / index.html'], ignorePath: '‹% = yeoman.app%› /', exclude: [' bower_components / bootstrap / dist / css / bootstrap.css ']}}, - person Michael Oryl; 08.05.2014
comment
На самом деле все работает как положено. Файл bower bootstrap.css больше не вводится в мой index.html. Мое замешательство (и постоянная проблема) заключается в том, что одна из других задач все еще объединяет файл Bower bootstrap.css с моим другим. - person Michael Oryl; 08.05.2014