我的专业网络阻止互联网访问。几个月前,我从存档(包含 composer.json 文件)和 composer.phar 的存档中下载了 Silex 框架,然后通过 HDD 将它们传输到我的桌面上。
我自定义的 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
输出: 生成自动加载文件
然后它没有错误地停止,但是 monolog 命名空间没有出现在我的 /vendor/composer/autoload_*.php
文件中。
我错过了什么?
最佳答案
感谢edmondscommerce的评论我找到了解决方案:
我用 artifact 更新了我的主 composer.json 文件存储库(我禁用了 packagist 一个):
{
"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/"
}
}
}
然后我根据composer.json 文件中的url 放置了一个名为artifact
的文件夹。
我在这个文件夹中创建了一个名为 monolog-monolog-1.8.zip 的 zip,其中包含我要添加的库。
然后只需启动一个 composer update
命令!
注意,zip 的根目录必须包含一个 composer.json 文件,并且这个 composer.json 文件必须包含一个版本!
关于php - Composer : how to add a dependency without network connection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26378840/