ручная работа(без Composer)

Обсуждение документации второй версии фреймворка. Переводы Cookbook и авторские рецепты.
Аватара пользователя
GeX
Сообщения: 52
Зарегистрирован: 2013.01.22, 09:10

Re: ручная работа(без Composer)

Сообщение GeX »

Ахтыжблин, ото я слепой на оба глаза, ну бывает - всего 2 дня как со вторым вожусь, не всё еще до конца облазил. Спасибо :) Ушел разбираться :)
Аватара пользователя
GeX
Сообщения: 52
Зарегистрирован: 2013.01.22, 09:10

Re: ручная работа(без Composer)

Сообщение GeX »

chungachguk писал(а):Можно. в GII при генерации расширения, в конце появляется подсказка как реализовать установку пакета локально.
UPD: а, не, немножко не то что надо. Там в подсказке показано как сделать локальный гит-репозитарий, я не хочу эту библиотеку выносить даже в локальный репозитарий - хочу чтобы вся разработка велась по месту установки, в качествае репозитария в данном случае выступает непосредственно сам репозитарий всего проекта вместе взятого, зачем еще что-то где-то отдельно держать? Да, это немножко не composer-way, ибо у него задумка что всю папку vendors можно грохнуть и пересоздать по месту, однако мне это мало интересно. Не будет это расширение вестись отдельной разработкой никогда в жизни, мало того - правиться оно будет всегда по месту, никто его поправлять где-то там не будет, потом пушить наверх, или после поправки локально наверх пушить - это лишний головняк. Ладно, может ща сам придумаю как быть :)

А вот за генератор экстеншена спасибо - не знал, не видел, реально слепой на оба глаза :)
Аватара пользователя
chungachguk
Сообщения: 435
Зарегистрирован: 2012.07.17, 11:52

Re: ручная работа(без Composer)

Сообщение chungachguk »

Я обычно, копирую нужную папку с расширением в vendor, инициализирую git, прописываю в composer.json путь и всё. Остаётся только комитить изменения перед выполнением composer update. Никаких git pull и git push я не делаю.
Аватара пользователя
GeX
Сообщения: 52
Зарегистрирован: 2013.01.22, 09:10

Re: ручная работа(без Composer)

Сообщение GeX »

chungachguk писал(а):Я обычно, копирую нужную папку с расширением в vendor, инициализирую git, прописываю в composer.json путь и всё. Остаётся только комитить изменения перед выполнением composer update. Никаких git pull и git push я не делаю.
Я, в конечном итоге, выкрутился чуть иначе. Таки пошел через артефакты, в общем вопрос решился, делюсь хаком, может решение не самое изящное, кто-то знает лучше, и поделится, но пока так. В общем:
1. У меня весь проект лежит внутри паблик-папки, сделал чтобы без всяких заморочек можно было на shared-хостинг вывешивать, да и с Vesta CP хорошо дружило. Соответственно все файлы лежат в папке application (то есть application/vendors/ application/controllers и т.д.), на одном уровне с ней лежит папка _dev_process где хранится всякий мусор нужный при разработке.
2. Через GII делаю каркас экстеншена, единственное что меня попросило добавить тег version в composer.json, сделал:

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

    "license": "GPL-3.0+",
    "version": "0.0.1",
    "authors": [ 
3. Пакую это дело в Zip, и кидаю в _dev_process чтобы было _dev_process\composer-artifacts\gex-yii2-liba-0.0.1.zip
4. В application/composer.json делаю правки:

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

    "repositories": [
        {
            "type": "artifact",
            "url": "../_dev_process/composer-artifacts/"
        }
    ],
    "require": {
        "php": ">=5.4.0",
        "yiisoft/yii2": "*",
        "yiisoft/yii2-bootstrap": "*",
        "yiisoft/yii2-swiftmailer": "*",
        "gex/yii2-liba": "*"
    },
 
5. composer update
6. PROFIT :)

Проводил эксперимент - в /application/vendor/gex/yii2-liba добавлял файлы, правил файлы - ни после composer install, ни после composer update ничего не уходило и не менялось, ничего не добавлялось и не исправлялось, в общем я получил то что я хотел. Может через жопу, но работает. Если здесь вдруг есть проктологи аналогичные мне - пользуйтесь :)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ручная работа(без Composer)

Сообщение zelenin »

GeX писал(а):Такс, насколько я понял принцип, то проект использует автолоад от композера, ок, нормально, пусть будет. Теперь момент. У меня есть библиотека, самопальная, самописная, несколько функций, скелеты классов и т.д., короче этакая надстроечка (у меня там была своя удобная мне надстройка для дебага в файл, аналог Zend_Registry, скелет под класс гидратора и т.д.). В yii1.1 я это дело подключал экстеншеном и прекрасно с ним работал. Ок. Если что-то нужно было дописать - дописывал непосредственно в папке экстеншена проекта, то есть эта штука совершенно не имела своего личного репозитария, нигде не лежала, жила себе тихо-мирно внутри проекта.

Теперь ситуация - композер. Я понимаю что в эту же библиотеку я могу добавить composer.phar, запаковать архивом и подключить или как пак, или как артефакт, оно себе встанет в vendors, пропишется в autoload и будет всё хорошо.

Но например у меня либа лежит в vendors/gex/liba. Можно ли композеру сказать что исходный репозитарий это vendors/gex/liba ? Чтобы он при composer install и composer update себе мозг не сломал? Можно ли править содержимое vendors/gex/liba так, чтобы оно не потёрлось при composer install или composer update?
вариантов много. указать файлы для автолоада, создать гит-репо и прописать в composer.json, переписать либу в psr-4 и подключить в ручную
Ответить