Игнорирование файлов при подключении библиотеки composer
Сделал библиотеку, залил её в gitlab
Хочу чтобы при установке библиотеки composer require "myname/mylib":"dev-master" исключался каталог /tests, .git/ и ещё пару файлов
Возможно я путаю, и composer такое не воспринимает, но я в файле .gitattributes добавил следующий код
/tests export-ignore
/some-file.ext export-ignore
Всё равно при подключении библиотеки эти файлы появляются, находил статью нужно composer install --prefer-dist выполнять, но тоже не помогла такая попытка установки библиотеки
Как побороть подскажите? Желательно подружить composer и .gitatributes
Я посмотрел популярные библиотеки, у них только .gitattributes прописан с исключениями
Ответы (1 шт):
Опция export-ignore файла .gitattributes используется при создании архива командой git archive. Попробуйте создать архив из своей библиотеки, размещенной на приватной VCS командой: git archive --remote [email protected]:/path/to/repo.git -o /tmp/mylib.zip master и распакуйте его - вы увидете, что файлы/папки, указанные Вами в файле .gitattributes - отсутствуют. Папку с индексом .git указывать в .gitattributes не нужно - в архив она не включается.
У вас библиотека находится на приватном VCS, который подключен в файле composer.json через настройки раздела "repositories": []. В таком случае при установке пакета, вне зависимости от установленных параметров --prefer-source или --prefer-dist для composer require, он будет устанавлен с помощью клонирования указанной ветки и поэтому опции export-ignore файла .gitattributes не будут использованы.
=
Вы можете "побороть" это, разместив вашу библиотеку из приватного проекта в репозитории с типом composer на платном ресурсе или создать собственный, на своем ресурсе.
Я опишу вариант с размещением репозитория на http-сервере (можно также, в подходящих случаях, разместить репозиторий локально, на хосте разработки).
Чтобы создать собственный composer-репозиторий нужно:
разместить два файл на http-сервере:
packages.jsonи файл с zip-архивом библиотеки(созданный командойgit archive)в файл
composer.json(папка проекта) добавить собственный репозиторий с типомcomposer
Пример содержимого файла packages.json:
{
"packages": {
"myname/mylib": {
"dev-master": {
"name": "myname/mylib",
"version": "dev-master",
"dist": {
"url": "https://example.com/downloads/myname/dev-master/mylib.zip",
"type": "zip"
},
"source": {
"type": "git",
"url": "[email protected]:/path/to/mylib.git",
"reference": "master"
}
}
}
}
}
Архив пакета создается командой:
git archive --remote [email protected]:/path/to/mylib.git -o ./mylib.zip master
Созданный composer-репозиторий добавляется в проект командой:
composer config repositories.example '{"type": "composer", "url": "https://example.com/path/to/folder"}'
где /path/to/folder - это путь до папки, в которой размещен файл packages.json
Теперь вы сможете устанавливать пакет из дистрибутива(опция --prefer-dist - по-умолчанию) - подготовленного архива (файл mylib.zip) или, для активной разработки, клонированием его из VCS-репозитория (опция --prefer-source)