php-kit/composer-expose-packages-plugin

通过在中央文件系统位置编辑任何项目,使包的开发更加容易。

2.2.0 2017-09-06 15:37 UTC

This package is auto-updated.

Last update: 2024-09-12 23:32:59 UTC


README

通过在中央文件系统位置编辑任何项目,使包的开发更加容易。

简介

这个Composer插件简化了在多个项目中使用的包的开发。

在项目的包安装过程中(通过composer installcomposer update),它为每个“暴露”的包在“交结目录”上创建符号链接。

哪些包被选中暴露,由项目composer.json中定义的一组匹配模式决定,或者是在全局composer.json中(它为所有项目定义规则)。

不同项目上的相同包将始终在交结目录的相同位置可用;您只需要在切换项目时运行composer expose命令。

此外,它还将所有暴露的包的备份复制到“源目录”,可以通过运行composer expose-source命令在交结目录上暴露这些备份。

最后,您可以通过运行composer expose-status命令来获取有关项目上哪些包正在被暴露的状态信息。

使用场景

当您想要

  • 在各自的仓库(源目录)或直接在使用的任何项目上编辑包,但始终通过相同的中央文件系统位置(交结目录)时,这些功能非常有用;
  • 在您的VCS GUI客户端(例如Git)上仅注册一次包的仓库,并重复使用该注册信息来处理使用该包的任何项目;
  • 自动配置具有写权限的认证origin远程。

附加功能

  • 在MacOS上,如果您已安装SourceTree,它会更新注册的仓库路径以使用交结目录,而不是符号链接目标(SourceTree必须不运行);这需要为每个仓库只做一次;
  • 支持自定义包安装目录,其中某些包可能使用安装器插件将它们安装到替代位置(除默认的vendor目录以外的位置);
  • 支持使用config.vendor-dir标准Composer设置自定义vendor目录位置;
  • 支持Windows上的符号链接(使用“交结”),待完成

要求

  • PHP版本 >= 5.6
  • 操作系统:Mac OS X、Linux或Windows(Vista、Server 2008或更新版本)

安装

**推荐**的设置是**全局安装插件**并全局设置其配置。这样,您可以避免在每个项目的composer.json中污染信息,这些信息对其他开发人员或项目的用户都无益。

在您的开发机器上全局安装

如果尚不存在,请在Composer的配置文件夹中创建一个composer.json文件(通常位于~/.composer)。

例如:~/.composer/composer.json

php-kit/composer-expose-packages-plugin添加到composer.jsonrequire设置中。

在任何地方运行composer global update

插件将仅对您的机器上的**所有**项目**有效**。除非您配置插件以暴露**特定**的包,然后执行composer install|update|expose|expose-source操作,否则不会暴露任何包。

按项目本地安装

php-kit/composer-expose-packages-plugin 添加到将使用共享包的项目的 composer.json 文件的 require-dev 设置中。

删除所有希望公开的包,然后在项目文件夹中运行 composer update

在生产环境中,如果您运行 composer install -no-dev,则此插件不会安装且不会共享任何包。这就是为什么插件名称应添加到 required-dev 而不是 require 的原因。

配置

从现在开始,当提到 composer.json 时,我指的是全局的或项目的,具体取决于您选择的安装类型。

该插件将加载全局配置(如果存在)和项目配置(再次,如果存在),并将它们合并。项目特定设置将优先于全局设置。

将额外的 expose-packages 配置部分添加到 composer.jsonextra 部分。

在该部分中,您可以指定一个包含 vendor/packages 名称或glob模式的数组作为 match 设置。

如果既不存在 match 设置,也没有指定名称或模式,则不会公开任何包。

您还可以指定一个 junctiondDir 设置,该设置定义了公开包的中心访问位置目录路径。它可以是一个相对路径或绝对路径,您也可以使用 ~ 作为用户主目录的别名。默认值为 ~/exposed-packages

这些配置设置仅适用于项目根目录的 composer.json。在包中指定的设置将没有效果。

如果您需要将设置与主项目的设置合并,可以使用 Wikimedia 的 composer-merge-plugin

最后,您还可以指定一个 sourceDir 设置,该设置定义了存储公开包备份副本的目录路径。

示例

~/.composer 中的全局 composer.json
{
  "require": {
    "php-kit/composer-expose-packages-plugin": "^2.0"
  },
  "extra": {
    "expose-packages": {
      "match": [
        "vendor/package",
        "vendor/prefix-*",
        "vendor/package-*-whatever",
        "vendor/wildcards??",
        "vendor/*",
        "*"
      ],
      "junctiondDir": "~/exposed-packages",
      "sourceDir": "~/packages"
    }
  }
}

调试

您可以使用 -v 标志以调试模式运行 Composer,以启用扩展信息消息的输出,这对于故障排除很有用。

此插件输出的消息将以 [shared-packages-plugin] 为前缀。

待办事项

  • Windows 支持

许可

此库是开源软件,许可协议为 MIT 许可证

版权 © 2015 由 Cláudio SilvaImpactwave Lda 提供。