我的专业网络阻止互联网访问。一个月前,我从存档(包含composer.json文件)和composer.phar文件中下载了Silex框架,然后通过硬盘将它们传输到桌面上。
我自定义的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
文件中。
我错过了什么?
答案 0 :(得分:4)
感谢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的root必须包含 composer.json 文件,此 composer.json 文件必须包含一个版本!
答案 1 :(得分:1)
如果您不想创建自定义存储库,还可以在联网计算机上的副本上运行composer install
(或composer update
)。然后,您可以将新添加和提取的组件复制到计算机上的供应商文件夹中,而无需访问Internet。请注意,您还需要复制vendor/composer/installed.json
以让作曲家知道新软件包已安装。复制完所有这些文件后,您可以在没有Internet访问权限的计算机上运行composer install
,并且不会尝试安装任何内容并转储自动加载文件。