2013-12-19 3 views
6

Я работаю над небольшим веб-приложением, используя Express.js, Backbone.js, Bootstrap и некоторые другие. Я решил дать Bower попробовать управлять компонентами переднего конца для этого, но после установки пакетов я заметил, что все они установили множество вещей, которые мне вообще не нужны, например файлы LESS (Bootstrap) или QUnit тесты для рамок (Backbone), README.md файлы, документация исходный код, и так далее:Как предотвратить Bower от раздувания моего приложения?

Bower Madness

Как вы можете видеть, это абсолютное безумие здесь.

Я немного искал индекс пакета, и я нашел более скудную версию Bootstrap, названную bootstrap.css, но после установки я заметил, что она по-прежнему остается версией 2.3.2, настолько устаревшей.

Нет ли способа установить актуальный dist версии всех этих библиотек?

Идея иметь менеджера пакетов - это хорошо, но кажется, что это немного похоже на то, чтобы мой источник приложения раздувался со всем этим. Мне определенно не нужна документация Backbone, установленная на моем веб-сервере.

ответ

4

Это вопрос авторов пакетов, не настраивающих их bower.json, чтобы игнорировать эти посторонние файлы и папки. Кроме того, не все авторы пакетов настраивают свои bower.json, чтобы перечислить основной файл (ы) для своего пакета.

Вы можете видеть, как без этих двух частей информации - какие файлы не нужны, а какие - главные файлы - Bower или любой другой инструмент не может надежно угадать, что необходимо и что такое хлам.

Что касается раздувания вашего сервера; в идеале, вы не должны использовать компоненты Bower. У вас будет процесс сборки, который будет брать исходные файлы, где бы они ни находились на диске, и преобразовывает их в один минитипированный файл.

+0

Bower docs упоминает [post] (http://addyosmani.com/blog/checking-in-front-end-dependencies/) Адди Османи, что противоречит вашему последнему предложению. Если это не пакетик, предназначенный для потребления другими, вы должны передать свои компоненты в свой VCS. – bartzy

+0

Как и любое решение в программном обеспечении, существует несколько способов решения проблемы, и тот, который подходит для вашего приложения, может оказаться неправильным для моего приложения. Если ваше приложение использует общие пакеты, jQuery, угловые, позвоночник и т. Д., Я бы не боялся, что они будут неправильно использовать semver в ближайшее время.И ваше приложение, вероятно, не так часто посещается, что вы не могли поймать какие-либо несоответствия в версиях локально, прежде чем посетитель увидит его на производстве. Не забывайте также, что вы обслуживаете файлы с ограниченным доступом на производстве. Мой совет в моем ответе выше говорит, что ваш процесс сборки должен исходить из источника и сделать его маленьким и уродливым. – Stephen

+0

Это файл, который отправляется на ваш prod-сервер, поэтому вы знаете, что он работает, поскольку, пока вы доверяете своему миниукуру, вы просто видели, как все это работает до того, как вы запустили сборку. В целом, моя личная позиция: если ваше приложение критически важно, проверьте свои депи. Если нет, не беспокойтесь об этом. Постскриптум Меня зовут в сообщении, которое вы связали. Если он не был отредактирован с тех пор, как он был опубликован, никаких конкретных рекомендаций «сделать это» не было. Это просто набор предпочтений. – Stephen

1

Вы можете попробовать bowercopy. Что он делает?

  1. Скачать все компоненты, перечисленные в Bower bower.json
  2. Скопируйте нужные файлы в указанную папку
  3. (Необязательно) Удалите папку bower_components.

Каждый раз, когда вы запускаете задачу bowercopy, он будет выполнять этот процесс выше.

ворчанием пример конфигурации

bowercopy: { 
     options: { 
      destPrefix:'app/jslib', // Here is the dest folder 
      clean:true // It's optinal 
     }, 
     dist: { 
      // List all the files you need here 
      src:'backbone/backbone.js' // "src" can be an array 
     } 
    } 

Да, Вы должны указать все файлы, необходимые один на один. Но он достигает вашей цели.

Смежные вопросы