Creo que sería útil tener un comando que muestre paquetes vinculados actualmente (usando yarn link [package]
) en el proyecto actual.
¿Qué tal algo similar a global
?
Usage: yarn link [add|ls|remove] [flags]
enlace de hilo [añadir | ls | eliminar] [banderas]
Sí, creo que sería muy explícito y agradable.
¿Algún movimiento o solución alternativa en este caso?
Encontré esta solución alternativa: ls -l node_modules | grep ^l
@tnrich buena solución, ¿hay alguna más general que admita el espacio de nombres? por ejemplo, node_modules/@myCompany
@bingzheyuan puedes probar
( ls -l node_modules ; ls -l node_modules/@* ) | grep ^l
(copiado de esta pregunta SO)
@jlegrone comprobado, funciona muy bien, muchas gracias
¿Se sigue considerando esta característica? @gatitos
+1. Sería bueno tener esto incorporado, aunque por ahora tengo un script independiente que uso:
find node_modules node_modules/\@* -depth 1 -type l -print | while read MODULE ; do
echo "Linked module in use: $MODULE"
done
Esto es especialmente útil en Windows, ya que realmente desea que el hilo le diga a qué cree que está vinculado al depurar enlaces simbólicos en esa plataforma.
solo busqué para ver si esto existe ...
Más importante que el caso de que los comentarios aquí brinden soluciones alternativas (para mí, al menos) es la capacidad de saber qué enlaces de hilo están _disponibles_, es decir, en qué directorios he ejecutado yarn link
, y qué existen asociaciones entre los nombres de paquetes y los directorios que contienen esos paquetes.
Uno podría pensar que el directorio ~/.yarn-config/link
contendría la información relevante, pero está vacío.
@MikeTaylor Creo que estás buscando ~/.config/yarn/link
Era_! ¡Muchas gracias!
(Esto me deja un poco preguntándome por qué tengo .yarn
, .yarn-cache
, .yarn-config
, .yarnrc
_and_ .config/yarn
en mi directorio de inicio, pero dejalo pasar.)
No encontrar esa configuración
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.
El único archivo que encuentro es ~ / .yarnrc
@retog si está usando Windows, parece que el directorio que está buscando es: C:\Users\<userName>\AppData\Local\Yarn\config\link
.
Gracias @TomGault , los enlaces están ahí.
Espero poder tener este lol para global y local.
¡Esto ayudaría enormemente a depurar cuando se trabaja en la integración de repositorios cruzados!
(Situación en la que me encuentro actualmente)
De hecho, sería bueno con un comando como yarn link ls
para ver todos los enlaces, especialmente cuando no recuerda desde dónde se creó un enlace, para que pueda eliminarlo.
Mientras tanto, para macOS / Linux, esto debería funcionar:
ls -la ~/.config/yarn/link/
hago una forma estúpida para esto, puedo mostrar la lista de enlaces del
https://www.npmjs.com/package/yarn-list-link
$ npx yarn-list-link
@node-novel\pattern-split
cjk-conv
lazy-cacache
regexp-cjk
uni-string
En mi PC con Windows 10, los enlaces de hilo están aquí:
~\AppData\Local\Yarn\Data\link\
alguna actualización ?
find node_modules -type l | grep -v .bin
y find ~/.config/yarn/link -type l
son útiles para encontrar módulos enlazados y enlazables, respectivamente.
En un intento de complementar la publicación de @hubgit , creo que lo siguiente sería suficiente para Windows usando PowerShell:
Get-ChildItem '.\node_modules\.bin\' | Where-Object {$_.LinkType -eq 'SymbolicLink'}
Esto será muy útil si se proporciona. ¿Hay algún avance?
+1
+1
Alternativamente, implemente # 710.
Si estoy ejecutando yarn link
y ya hay un paquete registrado con el mismo nombre, ¿por qué hilo no puede imprimir la ruta del paquete ya vinculado? Además, el hilo podría ser más inteligente al desvincular el otro paquete y vincular el actual (tal vez con una bandera -f
).
+1
+1
En Windows, dir %LOCALAPPDATA%\yarn\data\link
funcionará sin necesidad de saber su nombre de usuario o lo que sea.
+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 años y medio desde que se abrió este número y se etiquetó como una nueva característica (¿característica de gato?), y no hemos tenido noticias del equipo de yarn desde entonces. ¿Algún movimiento sobre esto? :)
Esto me ayudó a encontrar los paquetes vinculados en mi proyecto:
ls -l node_modules | grep ^l
https://stackoverflow.com/questions/24933955/easy-way-to-list-node-modules-i-have-npm-linked
El problema con ls -l node_modules | grep ^l
es que no mostrará paquetes _scoped_ vinculados (subdirectorios en un directorio @ como @types
)
La solución rápida es agregar la bandera recursiva R
al comando ls
. No puedo hablar por el rendimiento ya que probé en una lista de dependencias relativamente pequeña:
ls -lR node_modules | grep ^l
Esto es lo que hago para enumerar los paquetes actualmente vinculados en un proyecto:
yllc() {
find -L node_modules -maxdepth 3 -type d -xtype l | xargs -I{} sh -c "echo {} '->' $(realpath {})"
}
resulta en:
node_modules/@somname/somepkg -> /home/user/repos/somename-somepkg
Esto es lo que hago para encontrar paquetes que pueda vincular, que incluyen paquetes con ámbito:
yll () {
linkDir=~/.config/yarn/link
find $linkDir -maxdepth 2 -type l | xargs realpath -s --relative-to $linkDir
}
resulta en:
@somename/foo
@othername/bar
somepkg
otherpkg
Entonces puedo usar fzf
así:
yarn link $(yll | fzf -m)
Los he estado usando con tanta frecuencia que los he convertido en alias 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"
Dado que estamos publicando soluciones y todas parecen tan complicadas aquí, permítanme ayudarlos a todos:
alias yarn-linked="find node_modules -type l -maxdepth 3 | grep -v .bin | cut -f2 -d/"
Pan comido.
Editar: ¡ Aunque me gusta mucho la solución
Editar: ¡ Mi solución también es complicada! ¡Maldita sea, troll fall!
Editar: @Bkucera , su solución no es compatible con MacOS: llorar:
¿Puede alguien de yarn o npm investigar esto? claramente hay una gran demanda, por favor <3
+1
yll () { linkDir=~/.config/yarn/link find $linkDir -maxdepth 2 -type l | xargs realpath -s --relative-to $linkDir }
Funcionó como por arte de magia. ¡Gracias por compartir!
La solución que funcionó para mí fue simplemente:
~/.config/yarn/link
Creo que una buena solución sería agregar estas instrucciones al mensaje
Usando yarn 1.x
en un proyecto, terminó agregando un par de alias:
$ 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-)'
No me funciona. No tengo la carpeta ~/.config/yarn/link
, todo lo que tengo es una carpeta
Yo uso Manjaro linux, si eso pudiera ayudar.
¿Se sigue considerando esto?
Terminé haciendo una envoltura de Yarn que agrega esta funcionalidad, además de instalar automáticamente paquetes @types
en proyectos de TypeScript: https://github.com/iansu/blarn
Parece que no hay objeciones a que esta funcionalidad se agregue al hilo, solo debe hacerlo alguien. Requerimientos:
Posibilidad de enumerar los paquetes que se han vinculado al proyecto ACTUAL. En otras palabras, inspeccione recursivamente la carpeta node_modules
busca de enlaces simbólicos a paquetes externos (locales).
Posibilidad de desvincular todos los paquetes que se han vinculado al proyecto ACTUAL.
Posibilidad de enumerar los paquetes que se han registrado en el directorio de registro de enlaces global ( $HOME/.config/yarn/link
en * nix, %LOCALAPPDATA%\yarn\data\link
en Windows)
Dado que yarn link [add|ls|remove]
(una de las sugerencias anteriores) no es estrictamente compatible con versiones anteriores, propongo: yarn link --list
. Esta bandera debe crear una lista de AMBOS (1) y (3).
Además, propongo yarn unlink --all
como una forma de lograr (2).
Estoy trabajando en relaciones públicas. No estoy familiarizado en absoluto con las partes internas del hilo, pero si tiene éxito, lo vincularé a este problema cuando lo envíe.
Comentario más útil
¿Qué tal algo similar a
global
?Usage: yarn link [add|ls|remove] [flags]