Arhn - архитектура программирования

Как я могу настроить Bootstrap, не теряя изменений?

Я использую Bower для управления Bootstrap и хотел бы внести некоторые изменения (цвета, размер шрифта и т. д.) во внешний вид Bootstrap по умолчанию. Вот мой рабочий процесс:

  1. Изменить bower_components/bootstrap/less/variables.less
  2. Перекомпилируйте загрузчик, используя grunt build

Проблема в том, что я хочу иметь возможность обновить загрузчик, когда выйдет новая версия, и, предположительно, я потеряю свои изменения в variables.less.

Есть ли способ сохранить свои изменения за пределами bower_components, а также избежать использования bower_components в системе управления версиями, поскольку это 122 МБ?


  • мой ответ работает для вас? 17.07.2014
  • Да, с вашими и другими ответами я понял это. Ответ опубликован ниже. Большое спасибо. 21.07.2014

Ответы:


1

вы можете создать variables-custom.less и импортировать его в theme.less следующим образом:

//
// Load core variables and mixins
// --------------------------------------------------

@import "variables.less";
//import custom-variables after variables so the values will override.
@import "custom-variables.less"; //only has variables that have changed.
@import "mixins.less";

IMO, это немного лучше, чем первое решение, потому что вам не придется загружать два (почти) одинаковых файла CSS на клиенте.

Извините, я не могу помочь вам с тем, что нужно сказать о Bower и вашем системе управления версиями, так как я не использую Bower.

16.07.2014

2

Вот решение, которое сработало для меня:

Вот мой файл less/styles.less:

@import "../bower_components/bootstrap/less/bootstrap.less";
@import "../bower_components/bootstrap-chosen/bootstrap-chosen.less";

//My custom variables - overrides the bootstrap variables file
@import "variables-custom.less";
  • Используйте grunt для отслеживания изменений в папке less и компилируйте их в .css

Вот мой Gruntfile.js (благодаря этому ответу):

module.exports = function(grunt) {
    grunt.initConfig({
        less: {
            development: {
                options: {
                    paths: ["./less"],
                    yuicompress: true
                },
                files: {
                    "./static/css/styles.css": "./less/styles.less"
                }
            }
        },
        watch: {
            files: "./less/*",
            tasks: ["less"]
        }
    });
    grunt.loadNpmTasks('grunt-contrib-less');
    grunt.loadNpmTasks('grunt-contrib-watch');
};
21.07.2014
  • проблема в том, чтобы сделать это таким образом: что, если переменный файл изменится? вам придется отразить изменения в вашем настроенном файле переменных. но если вы просто переопределите необходимые переменные в своих пользовательских переменных, у вас будет меньше изменений. более СУХО переопределять, чем воссоздавать 26.07.2014
  • Это то, что делает мой файл variables.less, он просто переопределяет некоторые переменные начальной загрузки. Возможно, мне следует переименовать его в variables-custom.less 26.07.2014

  • 3

    Это действительно лучший метод настройки. Вы создаете theme.less и загружаете исходные файлы Bootstrap (которые могут быть обновлены в будущем), и в том же файле вы вызываете свои собственные переопределения. Либо вы @импортируете их из пользовательского файла, которого нет в каталоге Bower, либо вы просто пишете свои собственные правила в самой теме.less. Вы найдете объяснение этой техники в этот учебник.

    С Grunt пользовательские настройки могут быть сложными. Но с Brunch это проще простого (да!) и все в значительной степени происходит автоматически. Твоя бабушка могла это сделать.

    Что касается того, чтобы избежать включения bower_components в систему управления версиями: с Git это легко. Вы просто регистрируете свой bower.json, но обязательно добавляете /bower_components в свой файл .gitignore.

    24.07.2014

    4

    Вы должны просто создать свою собственную таблицу стилей, использовать обе с вашей пользовательской таблицей во вторую очередь. Таким образом, вы можете вносить изменения, но не менять загрузчик вообще.

    Кроме того, когда вы обновляете, вы сохраняете свою таблицу стилей прежней.

    Это позволяет вам изменять биты и части Bootstrap, но фактически не изменяя файл, вы переопределяете его.

    Чтобы было ясно, ваш второй файл CSS будет ЗНАЧИТЕЛЬНО меньше... В него помещаются только те вещи, которые вам нужно изменить.

    16.07.2014
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..