我想使用带有composer require的包,但我不希望它加载所有文件夹。我知道我应该在github上分配这个包并进行更改,但我想在需要时轻松更新包,复制/粘贴文件夹不是最好的选择。
所以,我在想,是否有可能在我composer.json
文件的分叉存储库上,告诉我不想加载Eloquent
和Console
个文件夹illuminate/database
包裹?
答案 0 :(得分:2)
首先,无法从Composer中排除这些文件夹。
我永远不会理解为什么有些人仍在寻找最后2个字节的磁盘空间。如今磁盘空间真的很便宜。 例如,你永远不会去删除一些你没有在包中使用的单个函数,或者你呢?
在我使用的几乎所有软件包/框架中,都有一些我不会使用的东西,但除非我是一个将我的代码发送给Pluto或其他东西的美国宇航局人员,否则它永远不会出现在我的脑海中。
我的建议:保留这些文件,除非非常需要删除这些文件。
如果您需要删除它们,您可以编写脚本并在post-package-update
事件中运行它。
以下是您在composer.json
中定义脚本事件的方法:
{
"scripts": {
"post-update-cmd": "MyVendor\\MyClass::postUpdate",
"post-package-install": [
"MyVendor\\MyClass::postPackageInstall"
],
"post-install-cmd": [
"MyVendor\\MyClass::warmCache",
"phpunit -c app/"
],
"post-create-project-cmd" : [
"php -r \"copy('config/local-example.php', 'config/local.php');\""
]
}
}
MyVendor\MyClass
类的示例:
<?php
namespace MyVendor;
use Composer\Script\Event;
use Composer\Installer\PackageEvent;
class MyClass
{
public static function postUpdate(Event $event)
{
$composer = $event->getComposer();
// do stuff
}
public static function postPackageInstall(PackageEvent $event)
{
$installedPackage = $event->getOperation()->getPackage();
// do stuff
}
public static function warmCache(Event $event)
{
// make cache toasty
}
}
有关如何使用脚本的更多信息,请参阅official composer documentation - scripts。