¿Es posible especificar un destino de paquete personalizado para npm install
, ya sea a través de un indicador de comando o una variable de entorno?
Por defecto, las instalaciones locales de npm terminan en node_modules
el directorio actual, pero quiero que se instale en node_modules
un directorio diferente, por ejemplo vendor/node_modules
. ¿Cómo puedo hacer que eso suceda?
./node_modules
, quiero que npm los instale en subdirectorios de./vendor/node_modules
. (O que le digan que eso no es configurable.)require
d) pero no quiero instalarlo globalmente.Respuestas:
TL; DR
Puede hacerlo utilizando la
--prefix
bandera y la--global
bandera *.* Aunque se trata de una instalación "global", los contenedores instalados no serán accesibles a través de la línea de comandos a menos que
~/foo/vendor/node_modules
exista enPATH
.TL; R
Cada atributo configurable de
npm
se puede establecer en cualquiera de los seis lugares diferentes. En orden de prioridad:--prefix ./vendor/node_modules
NPM_CONFIG_PREFIX=./vendor/node_modules
$HOME/.npmrc
ouserconfig
param$PREFIX/etc/npmrc
ouserconfig
parampath/to/npm/itself/npmrc
Por defecto, los paquetes instalados localmente entran
./node_modules
. los globales van a laprefix
variable de configuración (/usr/local
por defecto).Puede ejecutar
npm config list
para ver su configuración actual ynpm config edit
cambiarla.PD
En general,
npm
la documentación es realmente útil. La sección de carpetas es una buena descripción estructural de npm y la sección de configuración responde a esta pregunta.fuente
./vendor/node_modules/lib/bower
usonpm#3.8.0
No version provided in package.json
bins won't be accessible through the command line
. Por supuesto, el programa puede invocarse utilizando la ruta completanpm install [email protected] -g --prefix c:\my_npm` calling
c: \ my_npm \ eslint --fix my.js`npm install
en el directorio A con el archivo package.json, los paquetes se instalarán en el directorio B. Parece que esta solución es para paquetes individuales que se están instalando.npm install
instala dependencias localmente.npm install X -g -prefix "..."
instala el módulo X en el prefijo,npm install -g -prefix "..."
instala el paquete actual en el prefijo.Si desea esto en la configuración, puede configurar npm config de la siguiente manera:
o
Comprueba tu configuración con
npm config ls -l
O como dice @pje y usa la
--prefix
banderafuente
npm install
, aún se instalará localmente,./node_modules
peronpm install -g
se instalará en"$(pwd)/vendor/node_modules"
. Me imagino la configuración y luego me olvido de eso, volviendo más tarde preguntándome por qué mis paquetes globales están actuando de manera extraña.Para OSX, puede ir a su usuario
$HOME
(probablemente / Users / yourname /) y, si aún no existe, crear un.npmrc
archivo (un archivo que npm usa para la configuración del usuario) y crear un directorio para que sus paquetes npm instalarse en (por ejemplo, / Users / yourname / npm). En ese archivo .npmrc, establezca "prefijo" en su nuevo directorio npm, que será donde se instalarán los paquetes npm instalados "globalmente"; estos paquetes "globales", obviamente, estarán disponibles solo para su cuenta de usuario.En .npmrc:
prefix=${HOME}/npm
Luego ejecute este comando desde la línea de comando:
npm config ls -l
Debería dar salida tanto en su propia configuración local como en la configuración global npm, y debería ver reflejada su configuración de prefijo local, probablemente cerca de la parte superior de la larga lista de salida.
Por seguridad, recomiendo este enfoque para configurar el comportamiento de npm de su cuenta de usuario en lugar de compartir sus
/usr/local
carpetas, lo que he visto recomendado en otros lugares.fuente
En Windows 7, por ejemplo, se podría usar el siguiente conjunto de comandos / operaciones.
Cree una variable de entorno personal, las barras diagonales inversas son obligatorias:
%NPM_HOME%
C:\\SomeFolder\\SubFolder\\
Ahora, configure los valores de configuración en las nuevas carpetas (nombres de archivo ejemplares):
npm config set prefix "%NPM_HOME%\\npm"
npm config set cache "%NPM_HOME%\\npm-cache"
npm config set tmp "%NPM_HOME%\\temp"
Opcionalmente, puede purgar el contenido de las carpetas originales antes de cambiar la configuración.
Eliminar el npm-cache
npm cache clear
Listar los módulos npm
npm -g ls
Eliminar los módulos npm
npm -g rm name_of_package1 name_of_package2
fuente
Después de buscar esto yo mismo queriendo que varios proyectos con dependencias compartidas fueran SECOS, encontré:
require()
require()
bin
yman
$PATH
npm link
( info ) le permite usar una instalación local como fuente para globales→ adhiérase al Nodo e instálelo localmente
árbitro:
fuente