Como instalar o pacote com caminho local pelo Yarn? Não foi possível encontrar o pacote

96

No meu package.json, estou apontando o pacote local my-custom-i18npor seu caminho relativo:

package.json

"dependencies": {
 "core-js": "^2.4.1",
 "my-custom-i18n": "./../MyProject.Shared/myproject-i18n",
 "rxjs": "5.0.0-beta.12",
 ...
}

npm installinstala os pacotes corretamente, mas yarntem problemas e simplesmente não consegue encontrar este pacote:

saída de fio

$ yarn
yarn install v0.15.1
info No lockfile found.
[1/4] Resolving packages...
error Couldn't find package "myproject-i18n" on the "npm" registry.
info Visit http://yarnpkg.com/en/docs/cli/install for documentation about this command.

Vejo que parece no npmregistro, onde este pacote não está.

Questão

Existe alguma mudança para usar fios com embalagens locais? Por pacotes locais, quero dizer pacotes apontados por caminho relativo como my-custom-i18n.

Michalczukm
fonte

Respostas:

189

Yarn requer prefixo file:para pacotes locais.

Para caminho relativo:

yarn add file:./../your-project

Para caminho absoluto

yarn add file:/dev/your-project

Para seu exemplo, a dependência em package.jsonseria declarada da seguinte maneira:

 "my-custom-i18n": "file:./../MyProject.Shared/myproject-i18n",

Isso funciona tanto para Yarn quanto para NPM.

É incompatibilidade com o cliente NPM, a equipe do Yarn está ciente e declarou que suporta esse comportamento - referência sobre o problema do GitHub .

Atualizar:

Desde a versão v0.21.0 , o file:prefixo não é necessário. Veja pull-request com correção e changelog .

Piotr Lewandowski
fonte
1
obrigado, funciona como um encanto. Mas se não for compatível com o cliente npm por enquanto - vou deixar npmcomo está :) PS minha ideia era usar yarnapenas localmente sem converter toda a equipe e projeto. Então ... terei que esperar até o suporte para isso :)
michalczukm
3
certifique-se de limpar seu cache. como fio, sempre tente a versão em cache primeiro
Bo Chen
5
1 para a atualização! A remoção do file:prefixo resolveu um problema que tínhamos yarn installem que o Windows adicionava ./prefixo aos caminhos de arquivo relativos, mas o yarn installmacOS o removia.
Magne
O caminho absoluto não funcionou para mim. Funcionaria para a instalação, mas a transpilação falharia porque de alguma forma ele estava procurando por um caminho relativo, mas o yarn.lock tinha o caminho absoluto.
pixelearth
1
Parece que com yarn 1.17.3o file:prefixo ainda é necessário na seguinte situação: Digamos que você tenha um pacote barque possui uma dependência local ./dependencies/xyz. Se outro pacote fooestiver usando o pacote bar, ele tentará resolver em ./dependencies/xyzrelação ao foodiretório em vez de em relação ao bardiretório. Depois de mudar a dependência, file:./dependencies/xyzo problema foi resolvido.
David Callanan,