新创建的PHP Composer包一旦安装到另一个应用程序中,将不会下载composer包依赖项

svmlkihl  于 2023-04-19  发布在  PHP
关注(0)|答案(1)|浏览(95)

我有大约6年的编码中断。
我目前是为了自己的理解,提醒自己创建Composer包的过程。
我已经创建了一个简单的软件包,它有1个依赖项。它可以独立工作。把它拉进去并运行测试。
我创建了一个新的应用程序进行测试。我给了应用程序我的新包的位置作为依赖项。
它工作-它拉它和半运行。
我说semi,因为它没有拉入它所拥有的包1依赖项。
我敢肯定这是一个脸植物的场合,但我不记得我做错了什么。
会很感激你能给我指明方向。
以下是packages composer.json文件:

{
  "name": "sidekick/config",
 
  "minimum-stability": "stable",

  "require": {
    "vlucas/phpdotenv" : ">=5.4"

  },

  "autoload": {
    "psr-4": {
      "SideKick\\Config\\": "src"
    }
  }

}

这是MyApp的composer.json文件。

{
    "name": "myapp/package-tester",
    "autoload": {
        "psr-4": {
            "MyApp\\PackageTester\\": "src/"
        }
    },
   
    "require": {
        "sidekick/config": "dev-master"
    },

    "minimum-stability": "stable",

    "repositories": [
        {
            "type":"package",
            "package": {
                "name": "sidekick/config",
                "version":"dev-master",
                "source": {
                    "url": "prob-best-to-keep-private-for-now",
                    "type": "git",
                    "reference":"master"
                },
                "autoload": {
                    "classmap": ["/"]
                }
            }
        }
    ]
}

最后,这里是composer生成的类Map和供应商目录的抓取:

return array(
    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
    'SideKick\\Config\\Config' => $vendorDir . '/sidekick/config/src/Config.php',
);

grab of vendor directory

2eafrhcq

2eafrhcq1#

Composer有两个命令,您可以正常使用它们来进行故障排除,而不需要从class-map/autoloader 1中推导。

composer show(仅此而已)。我喜欢它的地方是,如果你从自己的仓库中拉入,它会显示git提交哈希。使用git,你可以显示该版本的composer.json文件:
**git show**即git -C <repo-path> show <rev>:composer.json和一些jq(1)。示例来自本地git仓库中的一些项目链接:

$ composer show                                                
hakre/json-pointer        dev-wip/bin e476125 JSON Text and JSON Pointer PHP library (data driven).
hakre/tunesmith           1.0.0               Tunesmith - noun; informal - A composer of popular musi...
roave/security-advisories dev-latest 9edb62e  Prevents installation of composer packages with known s...

$ git -C ../JsonPointer show e476125:composer.json | jq '.require'
{
  "php": "^5.3.3 || ^7.0 || ^8.0",
  "ext-json": "*"
}

在这里,依赖项目是从一个较旧的版本安装的,该版本除了平台包之外还没有任何其他需求。
大多数情况下,这会很快找到您所描述的问题。

**composer whywhy-not*在处理需求解析时也可以提供帮助,尽管在这种情况下,对于一个包编写者来说,问 * 为什么不? 还没有看到任何需求没有多大意义。我只是在你可能出现的下一个问题时提到它们,比如版本冲突或者你只是想知道。

  1. composer 自动装弹机故障排除说明:是的,我知道它的工作原理,我有时也这样做,但我发现只有当我需要解决实际的自动加载问题时,才是最好的,而不是上面提到的“需要”问题。阅读vendor/composer目录很难,因为它有很多文件,特别是从自动加载器。

相关问题