node.js - instalar - npm install windows
Dependencia local en package.json (10)
Quiero hacer algo como esto, por lo que npm install
también instala el package.json
de ../somelocallib
o, lo que es más importante, sus dependencias.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Actualización 2014-Sep
Esta característica fue implemented en la versión 2.0.0 de npm. Ejemplo:
{
"name": "baz",
"dependencies": {
"bar": "file:../foo/bar"
}
}
Cualquiera de las siguientes rutas también son válidas:
../foo/bar
~/foo/bar
./foo/bar
/foo/bar
El paquete local se copied al prefix ( ./node-modules
).
Vieja respuesta
Ponga somelocallib
como dependencia en su package.json
como de costumbre:
"dependencies": {
"somelocallib": "0.0.x"
}
Luego ejecute el npm link ../somelocallib
y npm instalará la versión en la que está trabajando como un enlace simbólico .
[email protected] /private/tmp/app
└── [email protected] -> /private/tmp/somelocallib
Referencia: link(1)
Ahora es posible especificar las rutas de instalación locales del módulo Node en su package.json
directamente. De la documentación:
Caminos Locales
A partir de la versión 2.0.0, puede proporcionar una ruta a un directorio local que contenga un paquete. Las rutas locales se pueden guardar usando
npm install -S
onpm install --save
, usando cualquiera de estos formularios:
../foo/bar ~/foo/bar ./foo/bar /foo/bar
en cuyo caso, se normalizarán a una ruta relativa y se agregarán a su
package.json
. Por ejemplo:
{ "name": "baz", "dependencies": { "bar": "file:../foo/bar" } }
Esta función es útil para el desarrollo fuera de línea local y para la creación de pruebas que requieren la instalación de npm donde no desea acceder a un servidor externo, pero no debe usarse al publicar paquetes en el registro público.
Así es como agregarás dependencias locales:
npm install file:src/assets/js/FILE_NAME
Agrégalo a package.json desde NPM:
npm install --save file:src/assets/js/FILE_NAME
Añadir directamente a package.json como este:
....
"angular2-autosize": "1.0.1",
"angular2-text-mask": "8.0.2",
"animate.css": "3.5.2",
"LIBRARY_NAME": "file:src/assets/js/FILE_NAME"
....
Curioso ... al menos en Windows (mi npm es 3. algo) que necesitaba hacer:
"dependencies": {
"body-parser": "^1.17.1",
"module1": "../module1",
"module2": "../module2",
Cuando hice una npm install ../module1 --save
, resultó en rutas absolutas y no relativas por la documentación.
Me metí un poco más y determiné que ../xxx
era suficiente.
Específicamente, he comprobado 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:
d:/build/module1> rmdir "./node_modules" /q /s && npm install
d:/build/module2> rmdir "./node_modules" /q /s && npm install
d:/build/nodeApp> rmdir "./node_modules" /q /s && npm install
package.json de module1 tiene una dependencia de "module2": "../module2"; módulo2 no tiene dependencia local; nodeApp tiene dependencias "module1": "../module1" y "module2": "../module2".
No estoy seguro de si esto solo me funciona ya que las 3 carpetas (module1, module2 y nodeApp) se encuentran en ese mismo nivel .......
En realidad, a partir de npm 2.0, ahora hay soporte para rutas locales (ver here ).
Esto funciona para mi
Coloque lo siguiente en su archivo package.json
"scripts": {
"preinstall": "npm install ../my-own-module/"
}
Esto me funcionó: primero, asegúrese de que los directorios npm tengan el usuario correcto
sudo chown -R myuser ~/.npm
sudo chown -R myuser /usr/local/lib/node_modules
Entonces tu en tu package.json enlace el directorio
"scripts": {
"preinstall": "npm ln mylib ../../path/to/mylib"
},
"dependencies": {
"mylib" : "*"
}
Sé que npm install ../somelocallib
funciona.
Sin embargo, no sé si la sintaxis que se muestra en la pregunta funcionará desde package.json
...
Desafortunadamente, doc parece mencionar solo la URL como una dependencia.
Pruebe el file:///.../...tar.gz
, apuntando a una biblioteca local comprimida ... y díganos si funciona.
Si desea automatizar aún más esto, ya que está controlando su módulo en el control de versiones y no quiere confiar en que los desarrolladores recuerden el enlace de npm, puede agregar esto a la sección "scripts" de package.json:
"scripts": {
"postinstall": "npm link ../somelocallib",
"postupdate": "npm link ../somelocallib"
}
Esto se siente más allá de hacky, pero parece "trabajar". Recibí el consejo de este problema de npm: https://github.com/isaacs/npm/issues/1558#issuecomment-12444454
Dos pasos para un desarrollo local completo: