作曲家需要本地开发者分支提供的软件包

时间:2019-09-14 02:01:07

标签: composer-php symfony-console composer.json

我开始为包含多个子存储库的项目做贡献:

  1. 主软件包可以在现有项目中单独使用,并且其所有依赖项都在composer.json中作为典型列表列出。

  2. Helper软件包,用于设置新的Laravel项目,将主软件包(上方)添加为依赖项(通过composer require),并执行许多初始化命令和设置过程。

我需要在本地计算机上同时处理这两个软件包,但是我只能让Composer引用安装程序的本地分支(下面的全局composer.json中的using a local repository),而不是主软件包。

{
    "repositories": [{
        "type": "vcs",
        "url": "../code/asdf-installer"
    }],
    "require": {
        "asdf/asdf-installer": "dev-master"
    }
}

使用此设置,当我运行composer global update时,Composer会提取我对本地安装程序软件包内部版本的提交。但是,由于主程序包是通过编程方式安装到新项目中的,因此无法使Composer引用我对该程序包的本地版本。

protected function execute(InputInterface $input, OutputInterface $output)
{
    $output->writeln('<info>Creating new project...</info>');

    $composer = $this->findComposer();

    $directory = $input->getArgument('name');

    $commands = [
        // create new laravel project
        $composer . ' create-project --prefer-dist laravel/laravel ' . $directory,

        // change to the project directory
        'cd ' . $directory,

        // load project dependencies
        $composer . ' require asdf/asdf',

        ...
    ];

    $process = new Process(implode(' && ', $commands), null, null, null, null);

    $process->run(function ($type, $line) use ($output) {
        $output->write($line);
    });

    $output->writeln('<comment>Project created.</comment>');
}

我希望能够像使用安装程序包在全局composer.json中所做的那样设置主包的存储库。但是考虑到我需要编辑的composer.json是由Laravel项目提供的,因此installer命令执行的任何composer require都会提取 published 包,而不会看到本地资料库。我无法事先设置存储库URL,而且不想添加任何仅开发人员命令,而只需要在推送更改之前将其删除即可。将本地存储库添加到我的全局composer.json并不能解决问题。

有更好的方法吗?

0 个答案:

没有答案