Композитор: как добавить зависимость без подключения к сети?

Моя профессиональная сеть блокирует доступ в интернет. Несколько месяцев назад я загружаю фреймворк Silex из архива (который содержит файл composer.json) и файл composer.phar, а затем переносю их на свой рабочий стол через жесткий диск.

Мой composer.json, который я настроил:

{
"name": "user/silex",
"require": {
"silex/silex": "1.2", "twig/twig": ">=1.8,<2.0-dev", "doctrine/dbal": "2.2.*", "symfony/security": "~2.3", "symfony/security": "~2.3"},
"autoload": {
"psr-4": {
"Portal\\": "src/"}
}
}

Работает нормально, моя настройка автозагрузки тоже.

сегодня Я хочу добавить monolog/monolog пакет, поэтому я вручную импортирую его с другого компьютера.

Я помещаю его в папку vendor и добавляю следующую строку в мой файл composer.json:

, "monolog/monolog": ">=1.0.0"

Я бегу на консоли:

php composer.phar dumpautoload

Это выводит:
Генерация файлов автозагрузки

Тогда это останавливается без ошибки, но пространство имен монолога не появляется в моем /vendor/composer/autoload_*.php файлы.

Что я упустил?

3

Решение

Благодаря edmondscommerceКомментарий Я нашел решение:

Я обновляю свою главную composer.json файл с артефакт репозиторий (и я отключаю упаковщик):

{
"name": "user/silex",
"repositories": [
{
"type": "artifact",
"url": "artifact/"}, {
"packagist": false
}
], "require": {
"silex/silex": "1.2", "twig/twig": ">=1.8,<2.0-dev", "monolog/monolog": "1.*", "doctrine/dbal": "2.2.*", "symfony/security": "~2.3"},
"autoload": {
"psr-4": {
"Portal\\": "src/"}
}
}

Затем я положил папку с именем artifact в соответствии с URL-адресом в composer.json файл.

Я создаю в эту папку почтовый индекс под названием monolog-monolog-1.8.zip с библиотекой, которую я хочу добавить.

Тогда просто запустите composer update команда!

Будьте осторожны, корень почтового индекса должен содержать composer.json файл, и это composer.json файл должен содержать версию!

4

Другие решения

Если вы не хотите создавать собственный репозиторий, вы также можете запустить composer install (или же composer update) на копии, которая находится на компьютере, подключенном к сети. Затем вы можете скопировать недавно добавленный и извлеченный компонент в папку поставщика на машине без доступа к Интернету. Обратите внимание, что вам также нужно скопировать vendor/composer/installed.json сообщить композитору, что новый пакет установлен. После того, как вы скопировали все эти файлы, вы можете запустить composer install на машине без доступа в интернет, и он не будет пытаться установить что-либо и сбросить файлы автозагрузки.

1