node.js - last - npm paquete de instalación local a la ubicación personalizada
npm last version (6)
TL; DR
Puede hacer esto usando el indicador --prefix
y el --global
*.
pje@friendbear:~/foo $ npm install bower -g --prefix ./vendor/node_modules
[email protected] /Users/pje/foo/vendor/node_modules/bower
* Aunque esta es una instalación "global", no se podrá acceder a los contenedores instalados a través de la línea de comandos a menos que ~/foo/vendor/node_modules
exista en PATH
.
TL; R
Cada atributo configurable de npm
se puede establecer en cualquiera de los seis lugares diferentes. En orden de prioridad:
- Indicadores de línea de comando:
--prefix ./vendor/node_modules
- Variables de entorno:
NPM_CONFIG_PREFIX=./vendor/node_modules
- Archivo de configuración de usuario:
$HOME/.npmrc
ouserconfig
param - Archivo de configuración global:
$PREFIX/etc/npmrc
ouserconfig
param - Archivo de configuración incorporado:
path/to/npm/itself/npmrc
- Configuración predeterminada: node_modules / npmconf / config-defs.js
Por defecto, los paquetes instalados localmente entran en ./node_modules
. los globales entran en la variable de configuración del prefix
( /usr/local
de forma predeterminada).
Puede ejecutar npm config list
para ver su configuración actual y npm config edit
para cambiarlo.
PD
En general, la documentación de npm
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.
¿Es posible especificar un destino de paquete personalizado para la npm install
, ya sea a través de un indicador de comando o una variable de entorno?
De forma predeterminada, las instalaciones locales npm terminan en node_modules
dentro del directorio actual, pero quiero que se instale en node_modules
dentro de un directorio diferente, por ejemplo vendor/node_modules
. ¿Cómo puedo hacer que eso suceda?
Después de buscar esto yo mismo, queriendo varios proyectos con dependencias compartidas para ser DRYer, he encontrado:
- La instalación local es la forma de Nodo para todo lo que quiera usar a través de
require()
- La instalación global es para los binarios que desee en su camino, pero no está destinado a nada a través de
require()
- El uso de un prefijo significa que debe agregar las rutas apropiadas
bin
yman
a$PATH
-
npm link
( información ) le permite usar una instalación local como fuente para globales
→ apegarse al modo Nodo e instalarlo localmente
árbitro:
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 dobles son obligatorias:
- Nombre de la variable:
%NPM_HOME%
- Valor de la variable:
C://SomeFolder//SubFolder//
Ahora, establezca los valores de configuración en las nuevas carpetas (ejemplos de nombres de archivos):
- Establecer la carpeta npm
npm config set prefix "%NPM_HOME%//npm"
- Establezca la carpeta npm-cache
npm config set cache "%NPM_HOME%//npm-cache"
- Establecer la carpeta temporal npm
npm config set tmp "%NPM_HOME%//temp"
Opcionalmente, puede purgar el contenido de las carpetas originales antes de que se cambie la configuración.
Eliminar el npm-cache
npm cache clear
Listar los módulos
npm -g ls
Eliminar los módulos
npm -g rm name_of_package1 name_of_package2
Para OSX, puede ir al $HOME
su usuario (probablemente / Users / yourname /) y, si aún no existe, crear un archivo .npmrc
(un archivo que npm usa para la configuración del usuario) y crear un directorio para sus paquetes npm para ser instalados en (por ejemplo, / Users / yourname / npm). En ese archivo .npmrc, configure "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 ejecuta este comando desde la línea de comando:
npm config ls -l
Debería dar salida tanto a su propia configuración local como a la configuración global de npm, y debería ver reflejada su configuración de prefijo local, probablemente cerca de la parte superior de la larga lista de resultados.
Por razones de seguridad, recomiendo este enfoque para configurar el comportamiento npm de su cuenta de usuario sobre la selección de sus carpetas /usr/local
, que he visto recomendado en otro lugar.
Si quieres esto en config, puedes establecer la configuración de npm así:
npm config set prefix "$(pwd)/vendor/node_modules"
o
npm config set prefix "$HOME/vendor/node_modules"
Verifica tu configuración con
npm config ls -l
O como dice @pje y usa la bandera --prefix
Simplemente instalaría localmente, luego en su package.json, moverlo de la sección de dependencias a devDependencies. Dependiendo de lo que utilice para implementar, es posible que no se implemente (por ejemplo, no lo haría en heroku).
devDependencies": {
"module": "0.1.0"
}