0

我修改了一个 symfony 4 包来修复一些错误。我现在想通过https://deployer.org/部署我的项目。

所以我在 .gitignore 中添加了这个不被忽略的包,以便我修改的包的文件夹在我的 github 存储库中可用。

执行deploy部署器的“”命令时,它会执行“”命令,/composer.phar install --verbose --prefer -dist --no-progress --no-interaction --no-dev --optimize-autoloader --no-suggest以便我的包编辑的文件夹被来自https://packagist.org/的原始包文件夹覆盖。

我想修改我的 composer.json 来定义我修改后的包的路径并且它不会被覆盖。

这是我在主项目的 composer.json 中尝试的内容:

{
    "type": "my-project",
    "license": "proprietary",
    "repositories": [
        {
            "type": "path",
            "url": "/vendor/my/modifiedBundle",
            "packagist.org": false,
        }
    ],
    "require": {
        ......
        "my/modifiedBundle": "0.6.1",
        ......
    },
    "require-dev": {
        .....
    },
    "config": {
        "preferred-install": {
            "my/modifiedBundle": "source",
            "*": "dist"
        },
        "sort-packages": true
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
    "replace": {
        ....
    },
    "scripts": {
        "auto-scripts": {
            "cache:clear": "symfony-cmd",
            "assets:install %PUBLIC_DIR%": "symfony-cmd"
        },
        "post-install-cmd": [
            "@auto-scripts"
        ],
        "post-update-cmd": [
            "@auto-scripts"
        ]
    },
    "conflict": {
        "symfony/symfony": "*"
    },
    "extra": {
        "symfony": {
            "allow-contrib": true,
            "require": "4.3.*"
        }
    }
}

这是我修改后的包的 composer.json:

{
  "name": "my/modifiedBundle",
  "type": "symfony-bundle",
  "license": "MIT",
  "require": {
    ...
  },
  "require-dev": {
    ...
  },
  "config": {
    "sort-packages": true
  },
  "autoload": {
    "psr-4": {
      "my\\modifiedBundle\\": ""
    }
  },
  "autoload-dev": {
    "psr-4": {
      "my\\modifiedBundle\\Tests\\": "tests/"
    }
  }
}

但是经过我的修改,修改后的bundle还是被原来的bundle覆盖了,你知道吗?

4

1 回答 1

1

@Skros2 解决了他的问题:

  • 将捆绑包分叉到自己的存储库
  • 编辑分叉
  • composer.json在他的项目上推荐他的叉子

如何引用叉子。

{
    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/foobar/intermediate.git"
        },
        {
            "type": "pear",
            "url": "http://pear.foobar.repo",
            "vendor-alias": "foobar"
        }
    ],
    "require": {
        "foobar/TopLevelPackage1": "*",
        "foobar/TopLevelPackage2": "*"
    }
}
于 2019-12-16T16:12:22.543 回答