myerscode/package-discovery

该包最新版本(1.0.0)没有可用的许可证信息。

一个帮助通过Composer元数据查找产品插件的包!

1.0.0 2022-09-25 21:34 UTC

This package is auto-updated.

Last update: 2024-09-16 17:07:19 UTC


README

一个帮助轻松查找服务插件的服务的服务,使用Composer元数据!

Latest Stable Version Total Downloads License Tests codecov

安装

您可以通过composer安装此包

composer require myerscode/package-discovery

用法

仅发布项目需要在他们的包中添加适当的元数据,然后由消费项目检测。一个想要发现项目的项目需要实例化一个Finder来查找项目命名空间。您将能够按需消费项目中发现的所有元数据。

发布项目

在您的package.json文件中,在extras对象中添加一个对象,其键与您想要发现的项目命名空间相关。

{
  "name": "myerscode/corgis",
  "extra": {
    "myerscode": {
      "corgis": ["Gerald", "Rupert"],
      "providers": [
        "Myerscode\\Corgis\\CorgiProvider"
      ]
    }
  }
}

消费项目

使用Finder类,传递相对于vendor目录的根路径来初始化。

然后使用discover方法来查找所有在其额外字段中有给定名称的包。

$finder = new Finder(__DIR__);

// would find all installed packages that have a myerscode namespace in the extras
$packages = $finder->discover('myerscode');

在发现包后,您将有一个数组,其中包含每个发现的元数据。

[
  "myerscode/corgis" => [
      "corgis": ["Gerald", "Rupert"],
      "providers": [
        "Myerscode\\Corgis\\CorgiProvider"
      ]
  ]
]

避免发现

如果您不想发现特定项目,则可以在消费包中添加一些元数据以防止此操作。

您可以通过在package.json文件的extra字段的projects命名空间下的avoid中添加包名来实现此操作。

{
  "name": "myerscode/demo-project",
  "extra": {
    "myerscode": {
      "avoid": [
        "myerscode/corgis"
      ]
    }
  }
}

如果您想避免加载所有可发现的包,只需在avoid字段中添加*

{
  "name": "myerscode/demo-project",
  "extra": {
    "myerscode": {
      "avoid": [ "*" ]
    }
  }
}

定位包

当您想要找出包在磁盘上的位置时,您可以使用locate方法来查找其绝对路径。

$finder = new Finder(__DIR__);

echo $finder->locate('myerscode/test-package');

// /User/fred/project-name/vendor/myerscode/test-package

获取服务包元数据

要获取特定服务的包元数据,请调用packageMetaForService方法,并传递包名和服务名。

$finder = new Finder(__DIR__);

echo $finder->packageMetaForService('myerscode/test-package', 'myerscode');

[
    "corgis": ["Gerald", "Rupert"],
    "providers": [
        "Myerscode\\Corgis\\CorgiProvider"
    ]
]

获取包额外信息

要获取包的所有额外数据,请调用packageExtra方法。

$finder = new Finder(__DIR__);

echo $finder->packageExtra('myerscode/test-package');

[
    "myerscode" => [
        "corgis": ["Gerald", "Rupert"],
        "providers": [
            "Myerscode\\Corgis\\CorgiProvider"
        ]
    ]
]

问题

有关错误报告和功能请求,请提交到Github Issue Tracker

贡献

有关信息,请参阅Myerscode contributing页面。

许可

MIT许可证(MIT)。有关更多信息,请参阅许可文件