Los paquetes se instalarán en ./install/here/node_modules. El mkdires necesario ya que de lo contrario la NGP podría elegir una ya existente node_modulesdirectorio de más arriba en la jerarquía. (Ver documentación de npm en las carpetas ).
Parece que debe tener el archivo package.json en este directorio alternativo si usa la opción --prefix. ¿Hay alguna manera de tener package.json en el directorio actual e instalar en el directorio alternativo?
2
@fractal Mira mi respuesta para eso
yunzen
10
@coundy ¿Hay alguna forma de especificar la ruta para npm install(sin el nombre del paquete)? Lancé esto directamente, pero luego npm busca package.jsonen el {prefix}. Lo que también pretendo es ser capaz de permitir la packages.jsonraíz del proyecto y al mismo tiempo instalar todos los paquetes {project root}/{project webroot}.
automatix
Me encontré con un problema de recurrencia. ¿Hay alguna manera de decirle que se ejecute una vez? Lo resolví temporalmente cambiando el directorio y luego llamando npm install, pero --prefixparece una mejor solución, si no estaba causando una recurrencia.
adi518
47
En la documentación se indica: Use la opción de prefijo junto con la opción global :
La configuración del prefijo por defecto es la ubicación donde está instalado el nodo. En la mayoría de los sistemas, esto es / usr / local . En Windows, esta es la ubicación exacta del binario node.exe. En los sistemas Unix, es un nivel superior, ya que el nodo generalmente se instala en {prefix} / bin / node en lugar de
{prefix} /node.exe .
Cuando se establece el indicador global , npm instala cosas en este prefijo. Cuando no está configurado, usa la raíz del paquete actual, o el directorio de trabajo actual si no está en un paquete ya.
(Énfasis por ellos)
Entonces, en su directorio raíz, puede instalar con
@Pavlo Si un paquete se instala globalmente, lo necesitará de la misma manera que siempre. Entonces sí, puede requerir un paquete que esté instalado globalmente.
Rob Evans el
43
A partir de npm versión 3.8.6, puede usar
npm install --prefix ./install/here <package>
para instalar en el directorio especificado. NPM crea automáticamente una node_modulescarpeta incluso cuando node_modulesya existe un directorio en la jerarquía superior. También puede tener un package.jsonen el directorio actual y luego instalarlo en el directorio especificado usando la --prefixopción:
npm install --prefix ./install/here
A partir de npm 6.0.0, puede usar
npm install --prefix ./install/here ./
instalar el package.json en el directorio actual al directorio "./install/here". Hay una cosa que noté en Mac que crea un enlace simbólico a la carpeta principal dentro del directorio node_modules. Pero, todavía funciona.
NOTA: NPM respeta la ruta que ha especificado a través de la --prefixopción. Se resuelve según la documentación de npm en las carpetas , solo cuando npm installse usa sin la --prefixopción.
Esto no parece funcionar, siempre me saleCan't install <current directory>: Missing package name
Tibor Blenessy
1
@TiborBlenessy Suponiendo que está hablando de la segunda declaración de instalación. Asegúrese de tener un archivo package.json válido en su directorio actual. Si aún no funciona, hágame saber su versión npm. Estos pasos solían funcionar con la versión npm especificada. Y, si ya no lo hacen, me encantaría profundizar y llegar a la causa raíz, y es posible que pueda encontrar una alternativa.
Rohit Sharma
1
@RohitSharma Usando npm 6.0.0, este método no funciona como se esperaba en el package.jsonarchivo./install/here
Christian Ivicevic
@ChristianIvicevic Puede usar npm install --prefix ./install/here ./ para instalar el package.json en el directorio actual en el directorio "./install/here". Hay una cosa que noté en Mac que crea un enlace simbólico a la carpeta principal dentro del directorio node_modules. Pero, todavía funciona con npm 6.0.0
Rohit Sharma
1
@Tanoro El tercer comando funcionará con npm 6.0.0 con la creación de enlaces simbólicos como se menciona en la respuesta. Nunca probé los primeros 2 comandos con npm v3.5.2, por eso mencioné la versión específica de npm con la que había intentado. No dude en actualizar la respuesta con comandos de trabajo para otras versiones también.
Rohit Sharma
0
Estoy usando una compilación de PowerShell y no pude ejecutar npm sin cambiar el directorio actual.
Terminé usando el comando de inicio y simplemente especificando el directorio de trabajo:
Respuestas:
Puedes usar la
--prefix
opción:Los paquetes se instalarán en
./install/here/node_modules
. Elmkdir
es necesario ya que de lo contrario la NGP podría elegir una ya existentenode_modules
directorio de más arriba en la jerarquía. (Ver documentación de npm en las carpetas ).fuente
npm install
(sin el nombre del paquete)? Lancé esto directamente, pero luego npm buscapackage.json
en el{prefix}
. Lo que también pretendo es ser capaz de permitir lapackages.json
raíz del proyecto y al mismo tiempo instalar todos los paquetes{project root}/{project webroot}
.npm install
, pero--prefix
parece una mejor solución, si no estaba causando una recurrencia.En la documentación se indica: Use la opción de prefijo junto con la opción global :
(Énfasis por ellos)
Entonces, en su directorio raíz, puede instalar con
e instalará la
node_modules
carpeta en la carpetafuente
require
instalar paquetes globalmente, ¿verdad?A partir de npm versión 3.8.6, puede usar
para instalar en el directorio especificado. NPM crea automáticamente una
node_modules
carpeta incluso cuandonode_modules
ya existe un directorio en la jerarquía superior. También puede tener unpackage.json
en el directorio actual y luego instalarlo en el directorio especificado usando la--prefix
opción:A partir de npm 6.0.0, puede usar
instalar el package.json en el directorio actual al directorio "./install/here". Hay una cosa que noté en Mac que crea un enlace simbólico a la carpeta principal dentro del directorio node_modules. Pero, todavía funciona.
NOTA: NPM respeta la ruta que ha especificado a través de la
--prefix
opción. Se resuelve según la documentación de npm en las carpetas , solo cuandonpm install
se usa sin la--prefix
opción.fuente
Can't install <current directory>: Missing package name
package.json
archivo./install/here
Estoy usando una compilación de PowerShell y no pude ejecutar npm sin cambiar el directorio actual.
Terminé usando el comando de inicio y simplemente especificando el directorio de trabajo:
fuente