Tengo un repositorio de módulos descargado, quiero instalarlo localmente, no globalmente en otro directorio.
¿Cuál es una manera fácil de hacer esto?
javascript
node.js
npm
packages
npm-install
lujoso
fuente
fuente

npm linkcreará una segunda instancia de dependencias externas. Entonces, si tiene un paquete A necesita B y C, B necesita C. vincular B hará que la aplicación A tenga dos instancias de C.solo debe proporcionar un
<folder>argumentonpm install, el argumento debe apuntar hacia la carpeta local en lugar del nombre del paquete:fuente
rm -rf node_modulesantes ynpm installdespués de ejecutar el script de respuesta.Dado que la misma persona me preguntó y respondió, agregaré un enlace npm como alternativa.
de documentos:
[Editar] A partir de NPM 2.0, puede declarar dependencias locales en package.json
fuente
npm linkcontra la carpeta una vez (para crear un enlace simbólico global) y luego ejecutarlanpm link package-namedentro de la carpeta del proyecto (para usar el enlace simbólico global en su proyecto). La respuesta a continuación es la respuesta correcta.file:enfoque) permitió que mi aplicación y el módulo local compartieran una dependencia. Mi prueba denpm linkresultó en una dependencia duplicada, que rompe cosas si la dependencia necesita ser utilizada como un singleton.npm pack+package.jsonEsto es lo que funcionó para mí:
PASO 1: En
module project, ejecutenpm pack:Esto construirá un
<package-name>-<version>.tar.gzarchivo.PASO 2: mueva el archivo a
consumer projectIdealmente, puede colocar todos esos archivos en una
tmpcarpeta en suconsumer-projectraíz:PASO 3: Refiéralo en su
package.json:PASO 4:
Installlos paquetes:npm installonpm ioyarnAhora, su paquete estaría disponible en su
consumer-project's node_modulescarpeta.Buena suerte...
fuente
Ninguno de estos enfoques (
npm linkopackage.jsondependencia de archivos) funciona si el módulo local tiene dependencias pares que solo desea instalar en el alcance de su proyecto.Por ejemplo:
En este escenario, npm configura
myproject'snode_modules/así:Cuando el nodo se carga
mymoduley lo hacerequire('foo'), el nodo resuelve elmymoduleenlace simbólico, y luego solo busca/local/mymodule/node_modules/(y sus antepasados)foo, lo que no encuentra. En cambio, queremos que el nodo mire/local/myproject/node_modules/, ya que desde allí ejecutamos nuestro proyecto y dóndefooestá instalado.Por lo tanto, necesitamos una forma de decirle al nodo que no resuelva este enlace simbólico cuando lo busque
foo, o necesitamos una forma de decirle a npm que instale una copia demymodulecuándo se usa la sintaxis de dependencia de archivospackage.json. Tampoco he encontrado una manera de hacerlo, desafortunadamente :(fuente
NODE_PATHpara apuntar al lugarnode_modules/dondefooestá instalado. Entonces, para el caso anterior, sería este:NODE_PATH=/dev/myproject/node_modules/eso permitemymoduleencontrarfoo.¿Falta la propiedad principal?
Como han respondido las personas anteriores
npm --save ../location-of-your-packages-root-directory. Sin../location-of-your-packages-root-directoryembargo, debe tener dos cosas para que funcione.1)
package.jsonen ese directorio apuntado hacia2) la
mainpropiedad en elpackage.jsondebe establecerse y trabajar ig"main": "src/index.js",si el archivo de entrada../location-of-your-packages-root-directoryes../location-of-your-packages-root-directory/src/index.jsfuente