Como exigir um garfo com compositor

aqui está o meu composer.json, eu quero usar o fork do projeto lessphp da Nodge no Github

"repositories": [{ "type": "package", "package": { "version": "dev-master", "name": "nodge/lessphp", "source": { "url": "https://github.com/Nodge/lessphp.git", "type": "git", "reference": "master" }, "autoload": { "classmap": ["lessc.inc.php"] } } }], "require": { "php": ">=5.3.3", "nodge/lessphp": "dev-master" }, 

Mas eu tenho esse erro quando eu faço atualização:

nodge / lessphp dev-master -> nenhum pacote correspondente encontrado.

Eu não sei como exigir corretamente este garfo …

Alguma sugestão ?

A maneira mais comum (e mais fácil) de fazer isso é usando um repository VCS.

Tudo o que você precisa fazer é adicionar seu fork como um repository e atualizar a restrição de versão para apontar para sua ramificação personalizada. Seu nome de ramificação personalizado deve ser prefixado com dev- .

Exemplo supondo que você atualizou o monolog para corrigir um bug na ramificação do bugfix:

 { "repositories": [ { "type": "vcs", "url": "https://github.com/igorw/monolog" } ], "require": { "monolog/monolog": "dev-bugfix" } } 

Observe que você não altera a instrução require, exceto para especificar sua ramificação de correção de erros. Você ainda faz referência ao pacote upstream ( monolog/monolog ), não ao seu fork pessoal ( igorw/monolog ). Você pode ler detalhes nos documentos

Usando o VCS funciona:

 "name": "test/test", "repositories": [{ "type": "vcs", "url": "http://github.com/Nodge/lessphp" }], "require": { "leafo/lessphp": "dev-master" }, 

Mas se eu precisar de um módulo que tenha este composer.json , ele não funciona. Instala o projeto original, não o fork.

Exemplo

 "name": "example/example", "require": { "test/test": "dev-master" }, 

Eu deveria mencionar novamente o repository. Isso é normal?

Se você não conseguir que a resposta do @ Neilime funcione para você, certifique-se de que seu fork use um branch diferente.

Por exemplo, empurre suas mudanças para um branch no seu fork chamado my-bugfix , não adicione dev- prefix no nome da sua branch, mas no seu composer.json você tem que adicioná-lo. Seu arquivo do compositor será parecido com:

 "repositories": [ { "type": "vcs", "url": "http://github.com/yourname/packageName" } ], "require": { "owner/packageName": "dev-my-bugfix" }, 

De acordo com a documentação do Composer http://getcomposer.org/doc/05-repositories.md#vcs , basta especificar o repository original (não o fork) no require (“nodge / lessphp” no seu caso). O Composer irá então instalar o SEU fork (veja o código nos fornecedores)

Eu costumo adicionar um nó “dist” à definição do pacote. Eu nunca tive um problema em usá-lo dessa maneira.

Não me lembro de onde consegui esse truque, no entanto, para mais explicações.

 { "repositories": [ { "type": "package", "package": { "version": "dev-master", "name": "nodge/lessphp", "source": { "url": "https://github.com/Nodge/lessphp.git", "type": "git", "reference": "master" }, "autoload": { "classmap": ["lessc.inc.php"] }, "dist": { "url": "https://github.com/Nodge/lessphp/archive/master.zip", "type": "zip" } } } ], "require": { "nodge/lessphp": "*" } } 

Eu tentei muitas opções, mas depois que eu comecei este post eu vi a luz e funcionou perfeitamente.

Isto é o que você tem que fazer:

1- Garfo de repository

2- Crie uma ramificação e faça as modificações necessárias.

3- Adicione o label do repository ao seu compositor.json

 "repositories": [ { "type": "vcs", "url": "https://github.com/user/yourforkname" } ] 

4- Na linha de comando dentro do seu projeto, exija seu fork assim:

 composer require vendor/packagename:dev-branchname 

E voilá !!

Você tem sua versão fork funcionando