Symfony 忽略packagist.org并为一个包指定路径

Symfony 忽略packagist.org并为一个包指定路径,symfony,composer-php,php-deployer,Symfony,Composer Php,Php Deployer,我修改了一个symfony4包来修复一些bug。我现在想通过部署我的项目 因此,我在.gitignore中添加了这个未被忽略的捆绑包,以便在我的github repo上可以使用包含我修改的捆绑包文件夹 在执行deployer的deploy命令时,它会执行/composer.phar install-verbose-prefere-dist-no progress-no interaction-no dev-optimize autoloader-no suggest命令,以便我的包编辑文件夹被来

我修改了一个symfony4包来修复一些bug。我现在想通过部署我的项目

因此,我在.gitignore中添加了这个未被忽略的捆绑包,以便在我的github repo上可以使用包含我修改的捆绑包文件夹

在执行deployer的deploy命令时,它会执行/composer.phar install-verbose-prefere-dist-no progress-no interaction-no dev-optimize autoloader-no suggest命令,以便我的包编辑文件夹被来自的原始包文件夹覆盖

我想修改我的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/"
    }
  }
}

但在我修改后,修改后的捆绑包仍然被原始捆绑包覆盖,你知道吗?

@Skros2解决了他的问题:

将捆绑包转移到它自己的存储库 编辑fork 在composer.json项目中引用他的叉子 如何使用叉子


我认为您的路径不应该是绝对的try:url:vendor/my/modifiedBundle,但如果它是GitHub上可用的捆绑包,您应该将其分叉、修改并引用到您的分叉中。@kl3sk它与分叉配合得很好,谢谢
{
    "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": "*"
    }
}