Composer:如何在没有网络连接的情况下添加依赖项?

Fra*_*ste 4 php autoload silex composer-php

我的专业网络阻止了Internet访问。一个月前,我从存档文件(包含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/"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,我的自动加载自定义也是如此。

今天,我想添加该monolog/monolog程序包,因此我从另一台计算机手动导入了该程序包。

我将其放置在我的供应商文件夹中,将以下行添加到我的composer.json文件中:

, "monolog/monolog": ">=1.0.0"
Run Code Online (Sandbox Code Playgroud)

我在控制台上运行:

php composer.phar dumpautoload
Run Code Online (Sandbox Code Playgroud)

它输出:生成自动加载文件

然后它停止,没有错误,但是monolog名称空间没有出现在我的/vendor/composer/autoload_*.php文件中。

我错过了什么?

Fra*_*ste 5

感谢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/"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,artifact根据composer.json文件中的url 放置一个名为的文件夹。

我在该文件夹中创建一个名为monolog-monolog-1.8.zip的zip文件,其中包含我要添加的库。

然后只需启动一个composer update命令!

请注意,zip的根目录必须包含composer.json文件,并且此composer.json文件必须包含版本!