Quiero hacer algo como esto, por lo que npm install
también instala el package.json
de ../somelocallib
o más importante sus dependencias.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Esta característica se implementó en la versión 2.0.0 de npm. 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
El paquete local se copiará al prefijo ( ./node-modules
).
Pon somelocallib
como dependencia en tu package.json
como de costumbre:
"dependencies": {
"somelocallib": "0.0.x"
}
Entonces corre npm link ../somelocallib
y npm instalará la versión en la que estás trabajando como un enlace simbólico .
app@0.0.1 /private/tmp/app
└── somelocallib@0.0.1 -> /private/tmp/somelocallib
Referencia: enlace (1)
npm dedup
para solucionar este problema. npmjs.org/doc/cli/npm-dedupe.htmlnpm install <folder>
descripción dice Instalar el paquete en el directorio como un enlace simbólico en el proyecto actual.Ahora es posible especificar rutas de instalación del módulo de nodo local en su
package.json
directamente. De los documentos:fuente
"bar": "file:///home/user/src/foo/bar"
node:onbuild
imágenes estándar solo copian el directorio actual y, por lo tanto, omiten cualquier cosa../foo
.npm install
provienen u otro repositorio git en la LAN? Cuando intento la instalación anterior y npm desde git + ssh, parece que se ve en el directorio node_modules y no intento pasar por git + ssh, aunque así es como estoy instalando el paquete de nivel superior.Esto funciona para mi.
Coloque lo siguiente en su archivo package.json
fuente
.gitignore
en la carpeta del módulo, se creó.npmignore
y la primera vez que lo ejecuté aplicó 777 recursivamente en todas las carpetas exceptonode_modules
. Pero sí, instaló las dependencias. Usando npm versión 1.4.14."dependencies": { "my-own-module": "file:../my-own-module" }
?npm link
es que no necesita hacerlonpm install
cada vez para actualizar sus dependencias.Si desea automatizar aún más esto, porque está revisando su módulo en el control de versiones y no quiere confiar en que los desarrolladores recuerden el enlace npm, puede agregar esto a la sección de "scripts" de package.json:
Esto se siente más allá de hacky, pero parece "funcionar". Recibí el consejo de este problema de npm: https://github.com/npm/npm/issues/1558#issuecomment-12444454
fuente
postinstall
y enpostupdate
lugar depreinstall
ypreupdate
?Así es como agregará dependencias locales:
npm install file:src/assets/js/FILE_NAME
Agréguelo a package.json desde NPM:
npm install --save file:src/assets/js/FILE_NAME
Agregue directamente a package.json así:
fuente
Proyecto maestro
Aquí está el package.json que usará para el proyecto maestro:
Ahí
./somelocallib
está la referencia a la carpeta de la biblioteca en relación con el proyecto maestro package.json .Referencia: https://docs.npmjs.com/files/package.json#local-paths
Subproyecto
Maneja las dependencias de tu biblioteca.
Además de correr
npm install
, deberás correr(cd node_modules/somelocallib && npm install)
.Este es un error conocido con NPM.
Referencia: https://github.com/npm/npm/issues/1341 (buscando una referencia más actualizada)
Notas para Docker
Revisa tu maestro
package.lock
y tusomelocallib/package.lock
administrador de código fuente.Luego, en su Dockerfile use:
Utilizo paréntesis en mis
(cd A && B)
construcciones para hacer que la operación sea idempotente.fuente
Sé que eso
npm install ../somelocallib
funciona.Sin embargo, no sé si la sintaxis que muestra en la pregunta funcionará o no
package.json
...Desafortunadamente, el documento parece mencionar solo la URL como una dependencia.
Intente
file:///.../...tar.gz
, señalando una lib local comprimida ... y díganos si funciona.fuente
Esto funcionó para mí: primero, asegúrese de que los directorios npm tengan el usuario correcto
Entonces su en su package.json enlace el directorio
fuente
npm install
.En realidad, a partir de npm 2.0, ahora hay soporte para rutas locales (ver aquí ).
fuente
Curioso ... al menos en Windows (mi npm es 3.algo) que necesitaba hacer:
Cuando hice un
npm install ../module1 --save
resultado resultó en rutas absolutas y no relativas según la documentación.Jugueteé un poco más y determiné que
../xxx
era suficiente.Específicamente, compruebo los módulos de nodo local para decir d: \ build \ module1, d: \ build \ module2 y mi proyecto de nodo (aplicación) en d: \ build \ nodeApp.
Para 'instalar', yo:
package.json del módulo1 tiene una dependencia de "module2": "../module2"; module2 no tiene dependencia local; nodeApp tiene dependencias "module1": "../module1" y "module2": "../module2".
No estoy seguro de si esto solo funciona para mí, ya que las 3 carpetas (módulo1, módulo2 y nodeApp) se encuentran en ese mismo nivel .......
fuente
Dos pasos para un desarrollo local completo:
fuente