Je pensais avoir compris la différence entre
npm link x
et
npm install /local/path/to/x
à l'origine, je pensais que le premier avait créé un lien symbolique vers x, tandis que le second avait installé une copie distincte de x dans votre projet, au lieu de le créer en lien symbolique.
Cependant, j'ai récemment remarqué que mon impression d'origine était fausse, et ils semblent tous les deux utiliser des liens symboliques - donc y a-t-il une différence entre les deux et quelle est-elle?
n article sur Medium par Alex Mills le met à nu.
Il indique la différence entre npm link x
et npm install /local/path/to/x
sont:
La grande différence est que npm install /local/path/x
exécutera les crochets de préinstallation/post-installation, mais npm link x
ne le sera pas.
npm link
utilise l'espace NPM global, npm install /local/path/x
ne fait pas. Le lien npm crée un lien symbolique vers x dans l'espace global, puis lorsque vous appelez le lien npm x à partir de y, il crée un lien symbolique non pas directement vers x, mais plutôt vers le lien symbolique global. Il s'agit d'une différence importante si vous utilisez différentes versions globales de node.js, par exemple NVM.
npm install /absolute/path/x
modifiera package.json, npm link x
ne fait pas.
Pour obtenir une nouvelle copie locale au lieu d'un lien symbolique, utilisez npm pack
, ainsi:
tgz="$PWD/$(npm pack)"
cd <other project>
npm install "$tgz"
Vous pouvez également utiliser cp/rsync, mais cela n'exécutera pas les hooks d'installation ni ne mettra les exécutables dans node_modules/.bin
...Ça marchera.
lien npm
npm link
npm link <folder>
Les deux commandes ci-dessus créeront un lien symbolique de <folder>
dans les packages globaux.
À présent npm link <folder>
aura le même lien symbolique dans votre node_modules
dossier également pour votre projet en cours. Et ces noms seraient basés sur le nom du projet dans package.json
et non basé sur le nom du dossier que vous liez
Le package.json
de votre projet actuel ne sera ni modifié ni modifié
Les dépendances du paquet seront toujours installées comme vous pouvez le voir dans le code ici
Donc, pour résumer
Installation npm
À présent npm install <folder>
est un peu différent de cela