代码之家  ›  专栏  ›  技术社区  ›  metaxos

composer在错误的路径中安装自己的TYPO3扩展

  •  1
  • metaxos  · 技术社区  · 10 年前

    我在bitbucket上有自己的TYPO3扩展。通过作曲家的作品( see here for input ). 扩展被下载到我的供应商文件夹中。在那里,我无法通过扩展管理器安装扩展。

    如何将我的文本转换为type3conf/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"
    }
    
    3 回复  |  直到 9 年前
        1
  •  6
  •   helmbert    10 年前

    用于Composer在中安装软件包 web/typo3conf/ext ,包需要具有类型 typo3-cms-extension 。在您的分机中 composer.json 该类型实际上已声明,但是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忽略了 作曲家.json 从那个包裹里。由于您已经有一个Git存储库,其中包含 作曲家.json ,我建议使用 vcs type 相反:

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

    这样做时,作曲家应该使用作曲家。json,识别正确的包类型( type3 cms扩展 )并将包安装到正确的目录中。

        2
  •  5
  •   Cedric Ziel    10 年前

    您需要添加 type 键的值 typo3-cms-extension 根深蒂固 composer.json 。这将使您的分机位于 web/typo3conf/ext 而不是 vendor/$vendor/$package 这又将使其可用于cms。

    重要的是,如果您在根作曲家中重新定义了包,请了解这一点。json作为 repository 类型 package , 没有什么 从扩展“ 作曲家.json 文件将被考虑在内,您需要在根目录中定义有关该包的任何问题 作曲家.json .

    所以应用我上面提到的规则,你的根 作曲家.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存储库。

        3
  •  0
  •   Kersten    10 年前

    尝试添加

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

    仅限使用 "Metaxos\\Exaibbrplus\\": "Classes/" 在自动加载器中。

    推荐文章