我想自定义我使用composer安装的模块,它现在位于/vendor
。当我在/module
目录中复制它时,它将不再被识别。这是文件/vendor/composer/autoload_classmap.php
,我将其添加到其中:
return array(
'myModule\\Module' => $vendorDir . '/../module/myModule/Module.php',
);
之后就开始工作了。但问题是每当我运行php comnposer.phar install
时,该文件被覆盖,我必须再次更新该文件。
似乎我做错了。那么,在不丢失功能的情况下,将模块从供应商目录复制到模块目录的正确方法是什么?
此致
编辑:我想分叉包并编辑该分支。
答案 0 :(得分:2)
从技术上讲,您可以通过在应用的vendor-dir
中指定composer.json
来更改作曲家安装内容的位置,请参阅:https://getcomposer.org/doc/04-schema.md#config但这会影响所有作曲家安装的内容,包括(大概)你的Zend Framework本身的安装。
我建议您按原样保留供应商文件夹,让Composer完成它的工作。
修改:好的,如果您想分叉项目,最好在应用之外进行更改。签出fork的副本,进行所需的任何更改并提交它们。然后在您的应用中运行composer update
以引入更新版本。
如果您需要在提交之前在应用中测试您的更改,那可能会有点繁琐。就个人而言,我要在文件系统的其他地方进行符号链接(暂时,只是为了让它正常工作)。或者编辑供应商中的文件只是为了确定需要进行哪些更改,然后将这些更改再次应用到单独的分叉项目中。可能有更好的方法。
答案 1 :(得分:0)
我认为在尝试解决这个问题之前你必须先问这个问题:
为什么我需要将此目录移动到其他位置?
编辑/修改/移动位于vendor
文件夹下的任何文件或目录,或者将它们合并到您真棒应用程序的模块/库/任何文件夹中。粘贴不是一个好习惯。作曲家不会喜欢这样。
要自定义库代码,请创建自己的模块(或库)文件夹,并正确扩展作曲家安装的第三方库类,这些类需要提供更多或不同的功能。