我在bitbucket上有一个自己的TYPO3扩展程序。通过作曲家获得这个(see here for input)。该扩展名已下载到我的供应商文件夹中。在那里我无法通过extension-manager安装扩展程序。
如何将我的ext插入typo3conf / ext(确保自动加载可以工作)?
扩展来自
{
"type": "composer",
"url": "http://composer.typo3.org/"
}
将(如预期的那样):
web/typo3config/ext
这是我的项目composer.json:
{
"repositories": [
{
"type": "composer",
"url": "http://composer.typo3.org/"
},
{
"type": "package",
"package": {
"name": "metaxos/exaibbrplus",
"version": "dev-2016",
"source": {
"url": "https://metaxos@bitbucket.org/metaxos/exaibbrplus.git",
"type": "git",
"reference": "release/2016"
}
}
}
],
"name": "Metaxos/ibbrating2016",
"require": {
"typo3/cms": "7.6.2",
"bk2k/bootstrap-package" : "dev-master",
"typo3-ter/compatibility6" : "7.6.0",
"typo3-ter/extension-builder" : "7.6.0",
"metaxos/exaibbrplus": "dev-2016"
},
"extra": {
"typo3/cms": {
"cms-package-dir": "{$vendor-dir}/typo3/cms",
"web-dir": "web"
}
}
}
这是我的扩展composer.json:
{
"name": "metaxos/exaibbrplus",
"description": "custom ext for typo3",
"type": "typo3-cms-extension",
"version": "0.0.1",
"require": {
"typo3/cms-core": ">=7.6.0,<8.0"
},
"replace": {
"extkey": "self.version",
"typo3-ter/extkey": "self.version"
},
"autoload": {
"psr-4": {
"Metaxos\\Exaibbrplus\\": "Classes/"
}
},
"keywords": ["custom", "ext"],
"homepage": "http://www.blah.ch"
}
答案 0 :(得分:5)
要让Composer在web/typo3conf/ext
中安装软件包,软件包需要具有typo3-cms-extension
类型。在您的扩展程序中composer.json
实际声明了此类型,但是Composer不会尊重它,因为您在项目级composer.json
中明确声明了程序包配置:
"repositories": [
# ...
{
"type": "package",
"package": {
"name": "metaxos/exaibbrplus",
"version": "dev-2016",
"source": {
"url": "https://metaxos@bitbucket.org/metaxos/exaibbrplus.git",
"type": "git",
"reference": "release/2016"
}
}
}
]
当您使用"type": "package"
作为自己的存储库时,我怀疑Composer会忽略该程序包中的composer.json
。由于您已经有一个包含composer.json
的Git存储库,我建议使用vcs
type添加存储库:
"repositories": [
{
"type": "vcs",
"url": "https://metaxos@bitbucket.org/metaxos/exaibbrplus.git"
}
]
执行此操作时,Composer应使用该存储库中的composer.json,识别正确的包类型(typo3-cms-extension
)并将包安装在正确的目录中。
答案 1 :(得分:5)
您需要将值为type
的{{1}}密钥添加到根typo3-cms-extension
。这会将您的扩展程序放在composer.json
而不是web/typo3conf/ext
,这反过来会使其可用于cms。
重要的是,要知道如果您将根composer.json中的包重新定义为vendor/$vendor/$package
类型repository
,则 来自扩展程序&#39;我们会考虑package
个文件,您需要在根composer.json
中定义有关该软件包的任何问题。
所以应用我上面提到的规则,您的根composer.json
将如下所示:
composer.json
如上所述@helmbert,您要么完全重新定义包,要么使用其他存储库类型。您可能需要考虑使用satisf或URL存储库。
答案 2 :(得分:0)
尝试添加
"replace": {
"exaibbrplus": "self.version",
"typo3-ter/exaibbrplus": "self.version"
},
在自动装带器中仅使用"Metaxos\\Exaibbrplus\\": "Classes/"
。