met*_*xos 1 typo3 composer-php typo3-extensions
我在Bitbucket上托管了自己的TYPO3扩展。通过作曲家获得此作品(请参阅此处输入)。该扩展名已下载到我的供应商文件夹中。在那里,我无法通过扩展管理器安装扩展。
如何将我的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"
}
为了使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软件包中的。由于您已经有一个包含的Git存储库,因此composer.json建议您使用vcs类型添加存储库:
"repositories": [
  {
    "type": "vcs",
    "url": "https://metaxos@bitbucket.org/metaxos/exaibbrplus.git"
  }
]
这样做时,Composer应该使用该存储库中的composer.json,识别正确的包类型(typo3-cms-extension)并将该包安装在正确的目录中。
您需要将type带有值的密钥添加typo3-cms-extension到根目录composer.json。这将放置您的扩展名,web/typo3conf/ext而不是vendor/$vendor/$package依次将其提供给cms。
这是很重要的,要知道,如果你在根composer.json重新定义封装repository类型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存储库。
| 归档时间: | 
 | 
| 查看次数: | 1321 次 | 
| 最近记录: |