После того как я сверстал проект с помощью БЭМ, я отдаю статическую верстку для работы на серверной стороне.
На сервере все запросы идут в публичный корень, где обрабатываются и вызывают нужную мне страницу, т.е все запросы идут на site.com/index.php.
Но пути в css бандлов после генерации bem-tools у меня выглядят примерно следующим образом:
.block-a
{
background: url("../../block/block-a/bg.gif");
}
Какие возникают проблемы:
1) Пути вроде ../../ мне не подходят, т.к они выходят из корня htdocs
2) Что делать с технологиями блоков, которые мне не нужны в htdocs, все что мне от блоков нужно после сборки это картинки, а файлы вроде css, js, bemhtml мне не нужны, т.к все уже собрано
С первым пунктом я могу конечно заменить все ../../ на нужный мне путь, но как быть со вторым пунктом - это надо пробежаться по всем блокам и удалить все кроме картинок?
Как вообще правильно с этим работать?
вари борщик
1) пути можно будет заменить на абсолютные или даже зафризенные
2) папки блоков для сервара будут не нужны
если напишешь примерно такой конфиг:
Может быть, не пользуюсь
Скорее всего он используется в помощь технологиям для склейки минификации и т.д. А если хочешь фризить статику или html/css/js... то скорее всего надо юзать отдельно самому.
В принципе, да, bem-server он для разработки. Когда надо чтобы всё было готово, запускаешь сборку проекта целиком в продакшен режиме, а потом поверх запускаешь борщик и всё остальное, что захочется.
Примерно в корень проекта
Скорее всего туда, где лежит папка .bem
посмотрите https://github.com/genera lov/project-stub/tree/sta s.js . это скелет проекта с костылями, для сборки статических страниц. цели сборки (разарботка, продакшен) рулятся в GNUMakefile, там же переключается конфиг борщика (точнее симлинка на директорию с целевыми конфигами, где лежит конфиг борщика).
создаю)
правельней тогда generalov == funca
https://github.com/alexba
после прогона bem make desktop.bundles/merged/_merged.css desktop.bundles/merged/_merged.js"
Поясни для чего нужна команда > bem make desktop.bundles/merged/_merged.css desktop.bundles/merged/_merged.js
Как я себе представляю, то нужно просто запустить bem make, а в make.js должна быть информация о создании merged бандла:
И тогда появится merged бандл
favicon понятно. я стянул этот символ со страницы bem.info, чтобы не вводить в продакшеновую сборку дополнительных условий для не встречающегося на практике кейса с отсуствующей иконкой и избавиться от 404 в логах bem server. пул-реквесты https://github.com/bem/project-stub/pull/23 https://github.com/bem/project-stub/pull/24
robots.txt сомнительно. он специфичен структуре сайта, продакшеновому конфигу борщика и сам по себе ни какой самостоятельной ценности не имеет. зачем он там такой? комплексный же пулреквест - вместе с конфигами борщика, и костылями в GNUMakefile, вводящими понятия "стурктура сайта", "продакшен" / "разработка" - будет нести какой-то совсем отдельный смысл. действительно-ли все эти примочки нужны именно в таком вот виде?
> generalov == funca
ReferenceError: generalov is not defined
Как делаю я:
1) Во всех бандлах у меня указаны пути до css и js из merged бандла
2) Провожу через борщик HTML файлы с настройками заморозки ресурсов, в результате у меня складываются все картинки, css и js файлы в нужную папку + в самом html я вижу ссылки на эти самые ресурсы
3) Провожу через борщик получившиеся из пред. пункта CSS файлы с настройками заморозки реурсов, в результате в туже папку складываются дополнительные картинки + ссылки из css на эти ресурсы
Вроде как все хорошо должно получиться, но проблема возникает на 3-м пункте, когда я указываю в качестве цели и в качестве результата одно и тоже имя css файла, то в итоге он получается пустой, например > borschik -i i/name.css -o i/name.css - в результате i/name.css создается пустым
Я не могу указать другое имя выходного файла, т.к путь до него указан в сборке после того как я прогнал html файл через борщик
Подскажите, что я делаю не так, спасибо
Как на счёт полной заморозки вместо 3-го пункта?
http://ru.bem.info/articles/borschik/ в самом конце статьи
Ну и, пожалуй, есть смысл сделать технологию сборки html, чтобы и с html не приходилось ничего дополнительно делать руками. Займусь, когда выпадет минута.
В нём полезная информация, на случай какой-то динамической генерации. Если 2м пунктом поменяли пути к css и js файлам, то просто игнорируй freeze-info.json.
Если сначала сделать полный фриз (пути в ксс поменяются), а потом фриз html (пути на эти ксс поменяются).
В какой момент проблема? )
Мне просто не понятно что надо сначала фризить, что потом и т.д
разве при сборке с помощью bem make, борщик фризит ресурсы - есть какой-то флажок? мне кажется он только ссылки рерайтит
кажется, если для технологий css и js указать только -i , а -o не указывать, тогда борщик нормально перезапишет оригинальный файл.
хм. можешь посмотреть, что делаю не правильно? я добавил отдельные правила для заморозки css и js в GNUmakefile только потому, что после bem make пути в них не зафризены
make dist
в конфиге .borschik секция про фриз имеется.
Во вторых как мне кажется то строчка "./i/": "/i/" лишняя - эта строчка "./": "/" и так все ссылки проставит так как нужно с учетом того что во фризе указано следующее: "./": "i/"
Скинь проект я взгляну, что не так, но еще раз заверяю, что bem make работает с борщиком ровно так же как и простой запуск борщика, исключая конечно некоторые настройки, которые связаны с окружением.
скайп есть, да.
я не спец по makefile. есть ощущение, что
:= выполняет правую часть и присваивает результат переменной.
= присваивает переменной выражение в правой части. оно выполняется при каждом обращении к переменной.
поэтому для констант удобнее использовать :=
?= задают дефолтные значения, позволяя переопределять в вызывающем make (верстка является частью проекта и собирается командой типа make -C static dist DISTDIR=$(STATIC_ROOT) )
e.generalov
можно счекаутить https://github.com/genera lov/project-stub/tree/sta s.js и выполнить make dist - сделает сборку в директорию build/* .