sirve que para link example devdependencies all node.js npm npm-install npm-link

node.js - example - npm link para que sirve



Diferencia entre `npm link x` y` npm install/path/to/x` (2)

Así que este artículo realmente parece dejarlo al descubierto: https://medium.com/@the1mills/how-to-test-your-npm-module-without-publishing-it-every-5-minutes-1c4cb4b369be

Dice que la diferencia entre npm link x y npm install /local/path/to/x es:

  1. La gran diferencia es que npm install /local/path/x ejecutará los npm link x preinstalación / postinstall, pero npm link x no lo hará.

  2. npm link utiliza el espacio NPM global, npm install /local/path/x no. npm link crea un enlace simbólico a x en el espacio global, y luego, cuando llama a npm link x desde y, crea un enlace simbólico no directamente a x, sino al enlace simbólico global. Esta es una diferencia importante si está utilizando diferentes versiones de node.js global, por ejemplo, NVM.

  3. npm install /absolute/path/x alterará package.json, npm link x no lo hace.

para obtener una copia local nueva en lugar de un enlace simbólico, use el npm pack , así:

tgz="$PWD/$(npm pack)" cd <other project> npm install "$tgz"

También podrías usar cp / rsync, pero eso no ejecutaría los ganchos de instalación, o pondría los ejecutables en node_modules/.bin ... eso hará el cerdo.

Pensé que entendía la diferencia entre

npm link x

y

npm install /local/path/to/x

originalmente pensé que el primero creó un enlace simbólico a x, mientras que el último instaló una copia separada de x en su proyecto, en lugar de simularlo.

Sin embargo, hace poco noté que mi impresión original era incorrecta, y ambos parecen usar enlaces simbólicos, así que ¿hay alguna diferencia entre los dos y cuál es?


enlace de npm

npm link npm link <folder>

Ambos comandos anteriores crearán un enlace simbólico de la <folder> en los paquetes globales.

Ahora npm link <folder> hará un enlace simbólico en su carpeta node_modules también para su proyecto actual. Y estos nombres se basarían en el nombre del proyecto en package.json y no en el nombre de la carpeta que está vinculando

El package.json de su proyecto actual no será tocado o alterado

Las dependencias del paquete aún se instalarán como puede ver en el código aquí

https://github.com/nodejs/node/blob/31d5bdea70e44802918d6f4aa7c378bc1992be54/deps/npm/lib/link.js#L156

Así que para resumir

  1. Crea un enlace simbólico en la carpeta global (siempre)
  2. No altera el paquete.
  3. Se instala cualquiera de las dependencias faltantes.

npm instalar

Ahora npm install <folder> es un poco diferente a esto

  1. No crea un enlace simbólico en la carpeta global
  2. Altera y agrega la referencia a package.json
  3. Crea un enlace simbólico a la carpeta original