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 link
creará 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_modules
antes ynpm install
despué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 link
contra la carpeta una vez (para crear un enlace simbólico global) y luego ejecutarlanpm link package-name
dentro 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 link
resultó en una dependencia duplicada, que rompe cosas si la dependencia necesita ser utilizada como un singleton.npm pack
+package.json
Esto es lo que funcionó para mí:
PASO 1: En
module project
, ejecutenpm pack
:Esto construirá un
<package-name>-<version>.tar.gz
archivo.PASO 2: mueva el archivo a
consumer project
Idealmente, puede colocar todos esos archivos en una
tmp
carpeta en suconsumer-project
raíz:PASO 3: Refiéralo en su
package.json
:PASO 4:
Install
los paquetes:npm install
onpm i
oyarn
Ahora, su paquete estaría disponible en su
consumer-project's node_modules
carpeta.Buena suerte...
fuente
Ninguno de estos enfoques (
npm link
opackage.json
dependencia 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
mymodule
y lo hacerequire('foo')
, el nodo resuelve elmymodule
enlace 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óndefoo
está 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 demymodule
cuándo se usa la sintaxis de dependencia de archivospackage.json
. Tampoco he encontrado una manera de hacerlo, desafortunadamente :(fuente
NODE_PATH
para apuntar al lugarnode_modules/
dondefoo
está instalado. Entonces, para el caso anterior, sería este:NODE_PATH=/dev/myproject/node_modules/
eso permitemymodule
encontrarfoo
.¿Falta la propiedad principal?
Como han respondido las personas anteriores
npm --save ../location-of-your-packages-root-directory
. Sin../location-of-your-packages-root-directory
embargo, debe tener dos cosas para que funcione.1)
package.json
en ese directorio apuntado hacia2) la
main
propiedad en elpackage.json
debe establecerse y trabajar ig"main": "src/index.js",
si el archivo de entrada../location-of-your-packages-root-directory
es../location-of-your-packages-root-directory/src/index.js
fuente