Acho que seria útil ter um comando que mostrasse pacotes vinculados atualmente (usando yarn link [package]
) no projeto atual.
Que tal algo semelhante a global
?
Usage: yarn link [add|ls|remove] [flags]
link do fio [adicionar | ls | remover] [sinalizadores]
Sim, acho que seria muito explícito e agradável.
Qualquer movimento ou solução alternativa para este?
Encontrei esta solução alternativa: ls -l node_modules | grep ^l
@tnrich boa solução, há uma mais geral que suporte namespace? por exemplo, node_modules/@myCompany
@bingzheyuan você pode tentar
( ls -l node_modules ; ls -l node_modules/@* ) | grep ^l
(copiado desta pergunta SO)
@jlegrone verificado, funciona muito bem, muito obrigado
Este recurso ainda está sendo considerado? @kittens
+1. Seria bom ter isso integrado, embora, por enquanto, eu tenha um script autônomo que uso:
find node_modules node_modules/\@* -depth 1 -type l -print | while read MODULE ; do
echo "Linked module in use: $MODULE"
done
Isso é especialmente útil no Windows, já que você realmente quer que o yarn diga a que ele pensa que está vinculado ao depurar links simbólicos nessa plataforma.
só procurei para ver se isso existe ...
Mais importante do que o caso em que os comentários aqui fornecem soluções alternativas (para mim, pelo menos) é a capacidade de saber quais links de fios estão _disponíveis_ - isto é, em quais diretórios eu executei yarn link
, e daí o que existem associações entre nomes de pacotes e diretórios que contêm esses pacotes.
Alguém pode pensar que o diretório ~/.yarn-config/link
conteria as informações relevantes - mas está vazio.
@MikeTaylor , acho que você está procurando ~/.config/yarn/link
Eu era_! Muito obrigado!
(Isso me deixa um pouco pensando por que tenho .yarn
, .yarn-cache
, .yarn-config
, .yarnrc
_and_ .config/yarn
em meu diretório inicial, mas deixe passar.)
Não encontrando essa configuração
PS C:\Users\me> ls ~/.config
Directory: C:\Users\me\.config
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2018-03-29 5:59 PM configstore
PS C:\Users\me> ls ~/.yarn-config
ls : Cannot find path 'C:\Users\me\.yarn-config' because it does not exist.
O único campo que encontro é ~ / .yarnrc
@retog se você estiver usando o Windows, parece que o diretório que você está procurando é: C:\Users\<userName>\AppData\Local\Yarn\config\link
.
Obrigado @TomGault , os links estão aí.
esperança pode ter isso lol para global e local
Isso ajudaria enormemente na depuração ao trabalhar na integração de repo cruzado!
(Situação em que me encontro atualmente)
Seria realmente bom com um comando como yarn link ls
para ver todos os links, especialmente quando você não se lembra de onde um link foi criado, então você pode removê-lo.
Enquanto isso, para macOS / Linux, isso deve funcionar:
ls -la ~/.config/yarn/link/
Eu faço uma maneira estúpida para isso, posso mostrar a lista de links do
https://www.npmjs.com/package/yarn-list-link
$ npx yarn-list-link
@node-novel\pattern-split
cjk-conv
lazy-cacache
regexp-cjk
uni-string
No meu PC com Windows 10, os links do yarn estão aqui:
~\AppData\Local\Yarn\Data\link\
alguma atualização?
find node_modules -type l | grep -v .bin
e find ~/.config/yarn/link -type l
são úteis para localizar módulos vinculados e vinculáveis, respectivamente.
Em uma tentativa de complementar a postagem de @hubgit , acredito que o seguinte seria
Get-ChildItem '.\node_modules\.bin\' | Where-Object {$_.LinkType -eq 'SymbolicLink'}
Isso será muito útil se fornecido. Há algum progresso?
+1
+1
Alternativamente, implemente # 710.
Se estou executando yarn link
e já existe um pacote registrado com o mesmo nome, por que o yarn não pode imprimir o caminho do pacote já vinculado? Além disso, o yarn poderia ser mais inteligente desvinculando o outro pacote e vinculando o atual (talvez com uma bandeira -f
).
+1
+1
No Windows, dir %LOCALAPPDATA%\yarn\data\link
funcionará sem a necessidade de saber seu nome de usuário ou qualquer outra coisa.
+1
# yarn link list
yll () {
current=$PWD
for link in $(find $HOME/.config/yarn/link -type l)
do
cd $link"/../"$(readlink $link)
echo $link $'\n==>' $PWD
done
cd $current
}
# yarn unlink [package]
yul () {
current=$PWD
link=$(find $HOME/.config/yarn/link -type l | grep $1$)
cd $link"/../"$(readlink $link)
yarn unlink
cd $current
}
@torifat 2 anos e meio desde que esta edição foi aberta e foi marcada como um novo recurso (recurso gato?), e não tivemos mais notícias da equipe do yarn desde então. Qualquer movimento sobre isso? :)
Isso me ajudou a encontrar os pacotes vinculados em meu projeto:
ls -l node_modules | grep ^l
https://stackoverflow.com/questions/24933955/easy-way-to-list-node-modules-i-have-npm-linked
O problema com ls -l node_modules | grep ^l
é que ele não mostra pacotes _scoped_ vinculados (subdiretórios em um diretório @ como @types
)
A solução rápida é adicionar o sinalizador recursivo R
ao comando ls
. Não posso falar de desempenho, pois testei em uma lista de dependências relativamente pequena:
ls -lR node_modules | grep ^l
Aqui está o que eu faço para listar os pacotes atualmente vinculados em um projeto:
yllc() {
find -L node_modules -maxdepth 3 -type d -xtype l | xargs -I{} sh -c "echo {} '->' $(realpath {})"
}
resulta em:
node_modules/@somname/somepkg -> /home/user/repos/somename-somepkg
Aqui está o que eu faço para encontrar pacotes que posso vincular, que incluem pacotes com escopo definido:
yll () {
linkDir=~/.config/yarn/link
find $linkDir -maxdepth 2 -type l | xargs realpath -s --relative-to $linkDir
}
resulta em:
@somename/foo
@othername/bar
somepkg
otherpkg
Posso então usar fzf
assim:
yarn link $(yll | fzf -m)
Tenho usado isso com tanta frequência que os transformei em aliases de bash:
alias yarn-linked="find . -type l | grep -v .bin | sed 's/^\.\/node_modules\///'"
alias yarn-unlink-all="yarn-linked | xargs yarn unlink && yarn install --check-files"
Já que estamos postando soluções e todas parecem tão complicadas aqui, deixe-me ajudá-los:
alias yarn-linked="find node_modules -type l -maxdepth 3 | grep -v .bin | cut -f2 -d/"
Mole-mole.
Edit: Embora pareça eu realmente gosto da solução
Edit: Minha solução também é complicada! Droga, troll falhou!
Edit: @Bkucera , sua solução não é compatível com MacOS: cry:
alguém do Yarn ou NPM pode dar uma olhada nisso? há claramente uma grande demanda, <3
+1
yll () { linkDir=~/.config/yarn/link find $linkDir -maxdepth 2 -type l | xargs realpath -s --relative-to $linkDir }
Isso funcionou como um encanto. Obrigado por compartilhar!
A solução que funcionou para mim foi apenas:
~/.config/yarn/link
Acho que uma boa solução seria adicionar essas instruções à mensagem
Usando yarn 1.x
em um projeto, acabou adicionando alguns apelidos:
$ alias | grep yarn
yarn-linked='find -L $(find node_modules -type l) -type d -prune'
yarn-links='(cd $HOME/.config/yarn/link && find . -type l | cut -c 3-)'
Não funciona para mim. Não tenho a pasta ~/.config/yarn/link
, só tenho uma pasta
Eu uso o Manjaro linux, se isso pudesse ajudar ..
Isso ainda é considerado?
Acabei fazendo um wrapper de Yarn que adiciona essa funcionalidade, além de instalar automaticamente pacotes @types
em projetos TypeScript: https://github.com/iansu/blarn
Parece que não há objeções a essa funcionalidade sendo adicionada ao fio, ela só precisa ser feita por alguém. Requisitos:
Capacidade de listar pacotes que foram vinculados ao projeto CURRENT. Em outras palavras, inspecione recursivamente a pasta node_modules
busca de links simbólicos para pacotes externos (locais).
Capacidade de desvincular todos os pacotes que foram vinculados ao projeto CURRENT.
Capacidade de listar pacotes que foram registrados no diretório de registro de link global ( $HOME/.config/yarn/link
em * nix, %LOCALAPPDATA%\yarn\data\link
no Windows)
Visto que yarn link [add|ls|remove]
(uma das sugestões anteriores) não é estritamente compatível com as versões anteriores, proponho: yarn link --list
. Este sinalizador deve criar uma lista de AMBOS (1) e (3).
Além disso, proponho yarn unlink --all
como forma de realizar (2).
Estou trabalhando em um PR. Não estou familiarizado com os componentes internos do fio, mas se for bem-sucedido, voltarei a abordar este problema ao enviar.
Comentários muito úteis
Que tal algo semelhante a
global
?Usage: yarn link [add|ls|remove] [flags]