作曲家在错误的路径中安装了自己的 TYPO3 扩展
composer installs own TYPO3 extension in wrong path
我在 bitbucket 上托管了一个自己的 TYPO3 扩展。通过 composer works () 获取。扩展被下载到我的供应商文件夹中。在那里我无法通过扩展管理器安装扩展。
如何让我的分机进入 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"
}
尝试添加
"replace": {
"exaibbrplus": "self.version",
"typo3-ter/exaibbrplus": "self.version"
},
并且仅在自动加载器中使用 "Metaxos\Exaibbrplus\": "Classes/"
。
要让 Composer 在 web/typo3conf/ext
中安装包,包的类型必须是 typo3-cms-extension
。在您的扩展 composer.json
中实际声明了此类型,但是 Composer 不会尊重它,因为您在 project-level 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
) 并将包安装在正确的目录中。
您需要将值为 typo3-cms-extension
的 type
键添加到根 composer.json
。这会将您的扩展程序放在 web/typo3conf/ext
而不是 vendor/$vendor/$package
中,这反过来又会使它对 cms 可用。
重要的是要知道,如果您将根 composer.json 中的包重新定义为 repository
,请键入 package
,nothing 来自扩展的 composer.json
文件将被考虑在内,您需要在根 composer.json
.
中定义有关该包的任何问题
So-applying 我上面提到的规则,你的根 composer.json
看起来像这样:
{
"repositories": [
{
"type": "composer",
"url": "http://composer.typo3.org/"
},
{
"type": "package",
"package": {
"name": "metaxos/exaibbrplus",
"version": "dev-2016",
"type": "typo3-cms-extension",
"source": {
"url": "https://metaxos@bitbucket.org/metaxos/exaibbrplus.git",
"type": "git",
"reference": "release/2016"
},
"autoload": {
"psr-4": {
"Metaxos\Exaibbrplus\": "Classes/"
}
},
}
}
],
"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"
}
}
}
正如@helmbert 上面提到的,您要么完全重新定义包,要么使用其他存储库类型。您可能需要考虑使用 satis 或 URL 存储库。
我在 bitbucket 上托管了一个自己的 TYPO3 扩展。通过 composer works (
如何让我的分机进入 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"
}
尝试添加
"replace": {
"exaibbrplus": "self.version",
"typo3-ter/exaibbrplus": "self.version"
},
并且仅在自动加载器中使用 "Metaxos\Exaibbrplus\": "Classes/"
。
要让 Composer 在 web/typo3conf/ext
中安装包,包的类型必须是 typo3-cms-extension
。在您的扩展 composer.json
中实际声明了此类型,但是 Composer 不会尊重它,因为您在 project-level 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
) 并将包安装在正确的目录中。
您需要将值为 typo3-cms-extension
的 type
键添加到根 composer.json
。这会将您的扩展程序放在 web/typo3conf/ext
而不是 vendor/$vendor/$package
中,这反过来又会使它对 cms 可用。
重要的是要知道,如果您将根 composer.json 中的包重新定义为 repository
,请键入 package
,nothing 来自扩展的 composer.json
文件将被考虑在内,您需要在根 composer.json
.
So-applying 我上面提到的规则,你的根 composer.json
看起来像这样:
{
"repositories": [
{
"type": "composer",
"url": "http://composer.typo3.org/"
},
{
"type": "package",
"package": {
"name": "metaxos/exaibbrplus",
"version": "dev-2016",
"type": "typo3-cms-extension",
"source": {
"url": "https://metaxos@bitbucket.org/metaxos/exaibbrplus.git",
"type": "git",
"reference": "release/2016"
},
"autoload": {
"psr-4": {
"Metaxos\Exaibbrplus\": "Classes/"
}
},
}
}
],
"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"
}
}
}
正如@helmbert 上面提到的,您要么完全重新定义包,要么使用其他存储库类型。您可能需要考虑使用 satis 或 URL 存储库。