php-kit / composer-expose-packages-plugin
通过在中央文件系统位置编辑任何项目,使包的开发更加容易。
Requires
- composer-plugin-api: ^1.0
Requires (Dev)
- composer/composer: ^1.3
README
通过在中央文件系统位置编辑任何项目,使包的开发更加容易。
简介
这个Composer插件简化了在多个项目中使用的包的开发。
在项目的包安装过程中(通过composer install
或composer 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.json
的require
设置中。
在任何地方运行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.json
的 extra
部分。
在该部分中,您可以指定一个包含 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 Silva 和 Impactwave Lda 提供。