Нужен совет по композеру

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Нужен совет по композеру

Сообщение Bio man »

По умолчанию, в приложении создаётся папка vendor и туда загружается фреймворк.
Мне нужно вынести фреймворк и все зависимости фреймворка в кастомную директорию, для того, что бы не качать фреймворк для каждого проекта, а иметь 1 общий на сервере.

Как это реализовать?
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Re: Нужен совет по композеру

Сообщение Bio man »

Или вынести всю папку vendor и грузить зависимости для каждого проекта туда?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Нужен совет по композеру

Сообщение zelenin »

Bio man писал(а):Или вынести всю папку vendor и грузить зависимости для каждого проекта туда?
в итоге у вас будет один проект, зависящий от одной версии yii, а другой проект от другой. Плюс расширения будут требовать yii и все равно его ставить в папку vendor.
Вывод: не мудрить.
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Re: Нужен совет по композеру

Сообщение Bio man »

В 2.0 изменений интерфейса ведь не будет, значит любой проект будет работать на актуальной 2.0.х версии. Разве нет?
К тому же, с покрытием тестами, баги, если и появятся, можно выявить перед деплоем, например.
Выйдет 2.1 версия, на новых проектах отредактирую composer.json, что бы зависимости загружал в другую папку.
Не вижу проблем.
Ах да, расширения. Вынес я vendor уровнем выше, все зависимости, и зависимости зависимостей загружаются в перенесённую vendor папку.
Проверено. Только что поставил расширение http://www.yiiframework.com/extension/y ... ha-widget/ при этом специально удалил папку vendor/yiisoft/yii2.

Предположение: а может всё таки стоит?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Нужен совет по композеру

Сообщение zelenin »

Bio man писал(а):В 2.0 изменений интерфейса ведь не будет, значит любой проект будет работать на актуальной 2.0.х версии. Разве нет?
К тому же, с покрытием тестами, баги, если и появятся, можно выявить перед деплоем, например.
Выйдет 2.1 версия, на новых проектах отредактирую composer.json, что бы зависимости загружал в другую папку.
Не вижу проблем.
Ах да, расширения. Вынес я vendor уровнем выше, все зависимости, и зависимости зависимостей загружаются в перенесённую vendor папку.
Проверено. Только что поставил расширение http://www.yiiframework.com/extension/y ... ha-widget/ при этом специально удалил папку vendor/yiisoft/yii2.

Предположение: а может всё таки стоит?
вы начните и сделайте пару проектов по такой схеме. Когда одно расширение будет требовать либу одной версии, а расширение в другом проекте либу другой версии, удаляя либу первой версии, вот тогда будете говорить про неизменность интерфейса yii2.
Пока что в вас говорит теоретик.
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Re: Нужен совет по композеру

Сообщение Bio man »

Да, это имеет смысл. Но всё же хочется вынести хоть что то ))
Можно как то вынести папку yiisoft, сделать её общей? И, что бы все остальные зависимости грузились в локальный vendor?
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Нужен совет по композеру

Сообщение yiijeka »

сделайте два composer.json ... :)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Нужен совет по композеру

Сообщение zelenin »

Bio man писал(а):Да, это имеет смысл. Но всё же хочется вынести хоть что то ))
Можно как то вынести папку yiisoft, сделать её общей? И, что бы все остальные зависимости грузились в локальный vendor?
нет, нельзя. Все равно сторонние расширения будут ставить yii2 в vendor, т.к. это зависимость.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Нужен совет по композеру

Сообщение zelenin »

можно конечно обойтись без композера, но оно вам надо?
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Re: Нужен совет по композеру

Сообщение Bio man »

zelenin писал(а):можно конечно обойтись без композера, но оно вам надо?
Неа. Ладно, всем спасибо, всё понял.
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Re: Нужен совет по композеру

Сообщение Bio man »

Всё таки не всё понял.
Представьте ситуацию. На сервере есть ядро (проект на yii2), которое имеет свои зависимости, т.е. в папку vendor пишет только свои зависимости. Тут вроде всё окей, один проект, зависимости изолированы от внешнего мира, никто больше в vendor ядра не пишет.

Но тут приходит проект, который хочет загружать зависимости в свою локальную папку, но не загружать то, что уже есть в зависимостях ядра, например, сам фреймворк.
Как это лучше реализовать? Отредактировать секцию require?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Нужен совет по композеру

Сообщение zelenin »

Bio man писал(а):Всё таки не всё понял.
Представьте ситуацию. На сервере есть ядро (проект на yii2), которое имеет свои зависимости, т.е. в папку vendor пишет только свои зависимости. Тут вроде всё окей, один проект, зависимости изолированы от внешнего мира, никто больше в vendor ядра не пишет.

Но тут приходит проект, который хочет загружать зависимости в свою локальную папку, но не загружать то, что уже есть в зависимостях ядра, например, сам фреймворк.
Как это лучше реализовать? Отредактировать секцию require?
непонятно объяснили. есть два проекта, у каждого своя папка vendor. дальше что?
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Re: Нужен совет по композеру

Сообщение Bio man »

Есть ядро, у ядра своя папка vendor. Ядро зависит только от неё.
Есть проект, который зависит от ядра, и может загружать свои зависимости в свою локальную папку vendor.
Но если ничего не трогать, то проект будет, и ядро, и фреймворк, и всё остальное загружать в свой вендор.
Я хочу, что бы проект не загружал глобальные зависимости, например, фреймворк, так, как он уже загружен в ядре.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Нужен совет по композеру

Сообщение zelenin »

Bio man писал(а):Есть ядро, у ядра своя папка vendor. Ядро зависит только от неё.
Есть проект, который зависит от ядра, и может загружать свои зависимости в свою локальную папку vendor.
Но если ничего не трогать, то проект будет, и ядро, и фреймворк, и всё остальное загружать в свой вендор.
Я хочу, что бы проект не загружал глобальные зависимости, например, фреймворк, так, как он уже загружен в ядре.
не хочу вникать. давайте без всяких выдуманных ядер. Есть приложения, проекты, директории итд. Ядро - это термин вами выдуманный.

Есть проект с composer.json. В нем есть vendor. Есть другой проект с другим composer и vendor. От этого отталкиваемся.
yujin1st
Сообщения: 192
Зарегистрирован: 2012.03.26, 12:03

Re: Нужен совет по композеру

Сообщение yujin1st »

Все равно лучше для каждого проекта и держать все зависимости отдельно, как и сделано по умолчанию.
Если же вы имеете в виду ядро большого проекта, а к нему разные модули... то это все равно одно приложение и уже в нем вы лишь подключаете что вам нужно в данный момент.
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Нужен совет по композеру

Сообщение yiijeka »

Он имеет ввиду, что есть папка, в которой будет лежать фреймворк Yii2 и возможно некоторые библиотеки. И будет куча локальных проектов, которые будут использовать эти (общие) библиотеки + ещё другие (разные) зависимости, которые он хочет поместить в отдельные, соответствующие проекту, папки.

Код: Выделить всё

- common_vendor (Yii2 и т.п.)

- site
--- vendors
--- @common_vendor 

- localSite2
--- vendors
--- @common_vendor 

.... 
Чтобы потом одной командой обновить во всех проектах например Yii2 до актуальной версии, остальное не трогать.

Продолжайте ...

p.s. с приходом composer такая идея избыточна, не думаю что вам жалко пару десятков мб. Это раньше когда руками приходилось zip качать - было удобно так. А сейчас лучше, как выше сказали, для каждого проекта отдельно
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Re: Нужен совет по композеру

Сообщение Bio man »

Да, именно так. Вы мне помогли понять, что основа моей затеи это централизованное обновление, а не просто вынос вендоров.
Предположим, "Ядро" это папка с Yii2, бэкендом и некоторыми своими библиотеками, и есть какое то количество сайтов, или приложений, использующих эту папку, или "Ядро". Предполагается, что все сайты, перед обновлением "Ядра", будут протестированы и совместимы с новой версией.

Какие преимущества это, имхо, даёт:
1. Быстрое обновление основных библиотек итд
2. Более быструю установку сайтов. Хотя, похоже, что кэш решает это проблему
3. Обновление только тех сайтов, которые не совместимы с новой версией. Т.е. не будет необходимости в каждом проекте делать composer update, т.к. все сайты "питаются" от центрального "Ядра". А со временем сайтов может стать больше 100.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Нужен совет по композеру

Сообщение zelenin »

Bio man писал(а):3. Обновление только тех сайтов, которые не совместимы с новой версией. Т.е. не будет необходимости в каждом проекте делать composer update, т.к. все сайты "питаются" от центрального "Ядра". А со временем сайтов может стать больше 100.
на проде и не надо делать update, только install. Да и необходимости обновляться нет, если не нужны новые фичи.
Bio man
Сообщения: 609
Зарегистрирован: 2013.07.22, 10:40

Re: Нужен совет по композеру

Сообщение Bio man »

zelenin писал(а):на проде и не надо делать update, только install. Да и необходимости обновляться нет, если не нужны новые фичи.
И всё же пользователи платят не за старые версии
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Нужен совет по композеру

Сообщение zelenin »

Bio man писал(а):
zelenin писал(а):на проде и не надо делать update, только install. Да и необходимости обновляться нет, если не нужны новые фичи.
И всё же пользователи платят не за старые версии
речь же не о cms идет, а о экслюзивных одноразовых проектах, которые не подразумевают наращивания фукнционала.
Ответить