1

我有一个托管在 bitbucket 上的自己的 TYPO3 扩展。通过作曲家作品得到这个(见这里输入)。扩展程序已下载到我的供应商文件夹中。在那里我无法通过扩展管理器安装扩展。

我怎样才能让我的分机进入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"
}
4

3 回答 3

6

为了让 Composer 安装包web/typo3conf/ext,包需要有 type 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该包中的 。由于您已经有一个包含 的 Git 存储库composer.json,因此我建议使用以下vcs类型添加存储库:

"repositories": [
  {
    "type": "vcs",
    "url": "https://metaxos@bitbucket.org/metaxos/exaibbrplus.git"
  }
]

这样做时,Composer 应该使用该存储库中的 composer.json,识别正确的包类型(typo3-cms-extension)并将包安装在正确的目录中。

于 2016-01-15T11:19:21.940 回答
5

您需要将type带有值的键添加typo3-cms-extension到 root composer.json。这会将您的扩展程序放入其中,web/typo3conf/ext而不是vendor/$vendor/$package反过来使其可用于 cms。

重要的是要知道,如果您将根 composer.json 中的包重新定义为repositorytype package,扩展文件中的任何composer.json内容都不会被考虑在内,您需要在根中定义有关该包的任何问题composer.json

因此,应用我上面提到的规则,您的根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 存储库。

于 2016-01-15T19:57:04.940 回答
0

尝试添加

"replace": { "exaibbrplus": "self.version", "typo3-ter/exaibbrplus": "self.version" },

并且仅"Metaxos\\Exaibbrplus\\": "Classes/"在自动装载机中使用。

于 2016-01-15T09:56:26.090 回答