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 bajo dependencias. P.ej
"express" : "3.1.1"
Me gustaría estructurar mi propio código de forma modular y que el paquete.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 package.json. Usar la --save
opció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 reinstalarla desde el package.json, falla (porque busca "mymodule" en el registro central y no se ve 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.
package.json
a lo que tenemos enGemfile
s.Respuestas:
npm install
ahora es compatible con estoPara que esto funcione
mymodule
debe configurarse como un módulo propiopackage.json
. Consulte Creación de módulos NodeJS .A partir de npm 2.0, las dependencias locales son compatibles de forma nativa. Ver la respuesta de danilopopeye a una pregunta similar . He copiado su respuesta aquí, ya que esta pregunta ocupa un lugar muy alto en los resultados de búsqueda web.
sincronización de actualizaciones
Dado que las
npm install
copiasmymodule
ennode_modules
, los cambios enmymodule
la fuente no serán vistos automáticamente por el proyecto dependiente.Hay dos formas de actualizar el proyecto dependiente con
Actualice la versión
mymodule
y luego usenpm update
: Como puede ver arriba, lapackage.json
entrada "dependencias" no incluye un especificador de versión como vería para las dependencias normales. En cambio, para las dependencias locales,npm update
solo intenta asegurarse de que esté instalada la última versión, según lo determinado pormymodule
'spackage.json
. Vea la respuesta de chriskelly a este problema específico .Vuelva a instalar usando
npm install
. Esto instalará lo que esté enmymodule
la ruta de origen de la fuente, incluso si es más antiguo o tiene una rama alternativa desprotegida, lo que sea.fuente
"mymodule":"file:mymoduledir"
npm install --save ../my-local-repo
import { HelloWorld } from "my-test-lib";
, pero recibo el error "No se puede encontrar el módulo". Por favor, eche un vistazo a stackoverflow.com/questions/46818083/…import { HelloWorld } from "my-test-lib";
Ver: dependencia local en package.json
Parece que la respuesta es
npm link
: https://docs.npmjs.com/cli/linkfuente
symlink
así, ¿cómo sabrá el proyecto padre reconstruir una vez que la dependencia haya terminado de construirse?No pude encontrar una manera ordenada al final, así que fui a crear un directorio llamado
local_modules
y luego agregué este bashscript al package.json en scripts-> preinstallfuente
Después de luchar mucho con el
npm link
comando (solución sugerida para desarrollar módulos locales sin publicarlos en un registro o mantener una copia separada en la carpeta node_modules), construí un pequeño módulo npm para ayudar con este problema.La solución requiere dos pasos sencillos .
Primero:
Segundo, agregue esto a su
package.json
:Más detalles en https://www.npmjs.com/package/lib-manager . Espero que ayude a alguien.
fuente
Si es aceptable simplemente publicar sus módulos preinstalados en node_modules junto con sus otros archivos, puede hacerlo así:
También es posible que desee almacenar su módulo en git y decirle a su paquete principal.json que instale la dependencia de git: https://npmjs.org/doc/json.html#Git-URLs-as-Dependencies
fuente