socialengine / composer-symlinker
一个将软件包安装为本地符号链接的Composer插件
Requires
- composer-plugin-api: 1.*
Requires (Dev)
- composer/composer: 1.*@dev
This package is not auto-updated.
Last update: 2024-09-18 10:42:49 UTC
README
此Composer插件允许您以本地符号链接的形式安装软件包,并提供回退到其他安装选项的选项。这允许您并行本地开发和其依赖项。
这已被讨论为Composer的可能改进,但进展缓慢。例如,参见Composer问题#1299和#4011。
这是基于piwi/composer-symlinker的一个分支,并做了一些增强。具体如下:
- 允许使用相对路径(如果您在虚拟机中开发但同时在宿主机器上编辑代码,这将非常有帮助)
- 如果找不到本地软件包,将回退到其他安装选项。
- 允许其他安装程序提供正确的安装路径。(当使用安装到非供应商位置的软件包时很有用)
设置
首先,将插件添加为您的composer.json
中的依赖项
"socialengine/composer-symlinker": "~1.0"
接下来,在您的composer.json
的extra
部分中定义软件包的本地路径。您有两种方法声明路径:
local-dirs
:列出要查找软件包的目录。在扫描时,这些路径将与vendor/package
结合。local-packages
:一个键值对象,其中键是软件包名称,值是该软件包的路径。路径可以是相对于composer.json
的。
如果您想限制要扫描的本地供应商,可以添加一个local-vendors
列表。
如果找不到本地软件包,插件将回退到其他安装方法(如packagist/git)。
示例额外部分
"extra": { "local-dirs": [ "/my/absolute/local/path1", "../../relative/local/path2" ], "local-vendors": [ "vendor1", "vendor2" ], "local-packages": { "vendor/package1": "/my/absolute/path/to/vendor/package1", "vendor/package2": "../relative/path/to/vendor/package2" } }
示例设置
假设我们想基于三个依赖项(MyPackage1
和MyPackage2
是我们的一些软件包,另一个是第三方ExternalPackage
)来开发一个名为MyProject
的项目。
此外,MyPackage1
位于/opt/php/MyVendor/MyPackage1
,而MyPackage2
可以在../my-package-2
找到。
我们可以这样配置我们的composer.json
:
"require": { "MyVendor/MyPackage1": "3.6.1", "MyVendor/MyPackage2": "0.10", "OtherVendor/ExternalPackage": "2.4.6" }, "require-dev": { "socialengine/composer-symlinker": "~1.0" }, "extra": { "local-dirs": "/opt/php/", "local-packages": { "MyVendor/MyPackage2": "../my-package-2" } }
因此,当在我们的本地环境中开发时,composer install
将安装我们的软件包,并将它们安装到相应的路径作为符号链接。如果在路径无效的盒子中使用相同的composer.json
,软件包将按正常方式安装。
Windows用户警告
该插件使用内部symlink()
PHP函数。请参阅手册中关于Windows的限制。
许可证
本软件根据MIT许可证发布。