silverstripe / vendor-plugin
允许供应商模块将目录暴露给webroot
2.0.3
2024-06-17 00:50 UTC
Requires
- php: ^8.1
- composer-plugin-api: ^2
- composer/installers: ^2
Requires (Dev)
- composer/composer: ^2
- phpunit/phpunit: ^9.6
- squizlabs/php_codesniffer: ^3.7
README
在将Silverstripe模块安装到供应商目录时,还可能需要确保某些模块资源暴露给webroot,因为默认情况下,'vendor' URL 前缀被阻止从Web访问。
示例
例如,给定以下模块composer.json
{ "name": "tractorcow/anothermodule", "description": "a test module", "type": "silverstripe-vendormodule", "extra": { "expose": [ "client" ] }, "require": { "silverstripe/vendor-plugin": "^1.0", "silverstripe/framework": "^4.0" } }
这将安装到vendor/tractorcow/anothermodule
文件夹中,并在resources/tractorcow/anothermodule/client
中创建一个符号链接,允许Web服务器从供应商文件夹中提供服务,而不暴露任何代码或其他内部服务器文件。
注意:模块类型silverstripe-vendormodule
是强制性的,因为此行为对于其他类型的库并未启用。
自定义行为
默认情况下,插件将尝试执行符号链接,失败时回退到完整文件系统复制。
如果需要,您可以使用SS_VENDOR_METHOD
环境变量(在安装之前设置在您的系统环境中)来强制以下行为之一:
none
- 禁用所有符号链接/复制copy
- 仅执行复制symlink
- 仅执行符号链接junction
- 使用连接(仅限Windows)auto
-> 执行符号链接(或Windows上的连接),但失败时回退到复制。
更新所有暴露的文件夹
可以随时运行自定义composer命令来更新/刷新所有内容
composer vendor-expose [<method>]
您可以将上述方法之一传递进去以强制特定行为,否则将根据之前使用的方法或SS_VENDOR_METHOD
环境参数选择默认值。