Cómo especificar módulos locales como dependencias del paquete npm

Resuelto Sam Adams asked hace 11 años • 9 respuestas

Tengo una aplicación que tiene el conjunto habitual de dependencias en módulos de terceros (por ejemplo, 'express') especificado en el archivo package.json en dependencias. P.ej

"express"     : "3.1.1"

Me gustaría estructurar mi propio código de forma modular y que package.json instale un conjunto de módulos locales (es decir, en el sistema de archivos en el que estoy actualmente). Sé que puedo instalar un módulo local ejecutando:

npm install path/to/mymodule

Sin embargo, no sé cómo hacer que esto suceda a través de la estructura de dependencias de package.json. Usar la --saveopción en este comando es simplemente ponerlo "mymodule": "0.0.0"en mi paquete.json (no hace referencia a la ubicación de la ruta del archivo). Si luego elimino la versión instalada de node_modules e intento volver a instalarla desde package.json, falla (porque busca "mymodule" en el registro central y no busca localmente).

Estoy seguro de que es una forma de decirle a la "dependencies": {}estructura que quiero que se instale desde una ruta del sistema de archivos, pero no sé cómo.

¿Alguien más ha tenido este problema? Gracias.

Sam Adams avatar Apr 04 '13 15:04 Sam Adams
Aceptado

npm installahora apoya esto

npm install --save ../path/to/mymodule

Para que esto funcione mymodulese debe configurar como un módulo propio package.json. Consulte Creación de módulos NodeJS .

A partir de npm 2.0, las dependencias locales se admiten de forma nativa. Vea la respuesta de danilopopeye a una pregunta similar . Copié su respuesta aquí porque esta pregunta ocupa un lugar muy alto en los resultados de búsqueda web.

Esta característica se implementó en la versión 2.0.0 de npm. Por ejemplo:

{
  "name": "baz",
  "dependencies": {
    "bar": "file:../foo/bar"
  }
}

Cualquiera de las siguientes rutas también es válida:

../foo/bar
~/foo/bar
./foo/bar
/foo/bar

sincronizando actualizaciones

Dado que npm install <folder>agrega el paquete en el directorio como un enlace simbólico en el proyecto actual, cualquier cambio en el paquete local se sincroniza automáticamente.

Randy the Dev avatar Jul 17 '2016 01:07 Randy the Dev

Ver: Dependencia local en package.json

Parece que la respuesta es npm link: https://docs.npmjs.com/cli/link

jasoncrawford avatar Oct 07 '2013 11:10 jasoncrawford

Lo siguiente debería ayudar (suponiendo que la biblioteca y la aplicación comparten la misma carpeta principal)

En la biblioteca :

npm pack // this will pack the library in a .tgz file

En la aplicación que necesita la biblioteca.

npm i ../mylibrary/../library-package-X.X.tgz

Esto realizará los siguientes cambios en su aplicación .

package.jsonahora tendrá

 "@mylibrary": "file:../mylibrary/library-package-X.X.tgz",
Taranjeet Singh avatar Mar 16 '2023 13:03 Taranjeet Singh