node.js - latest - Instalar NPM en el directorio de inicio con el paquete de distribución nodejs(Ubuntu)
npm install node (7)
npm config set prefix ~
echo export PATH=/$PATH:/~/bin >> ~/.bashrc
. ~/.bashrc
Me gustaría usar los paquetes de distribución Node.js (o el archivo chp de chris-lea para versiones más recientes) pero instalar NPM en mi directorio de inicio.
Esto puede parecer quisquilloso, pero es una manera bastante idiomática para los desarrolladores que utilizan polyglot / github para configurar entornos de tiempo de ejecución / biblioteca en Linux: paquetes de distribución para el tiempo de ejecución, bibliotecas de terceros en el entorno por usuario (ver virtualenv, RVM - RVM también construirá Ruby para ti si quieres). Si es necesario construiré un nodo localmente pero es un PITA ya que el nodo se está convirtiendo en un requisito de desarrollo incidental para muchos proyectos.
- Instrucciones para instalar node + npm en el directorio de inicio
- Otro método para instalar node + npm en el hogar
Parece que el segundo enlace podría funcionar con los paquetes de distribución nodejs, pero parece bastante incompleto.
Actualizar esta pegada resume el segundo enlace anterior, pero no funciona para mí (parece que npm ignora ~ / .npmrc, al menos durante la instalación).
Debido a que python ya hace un gran trabajo virtualenv
, yo uso nodeenv
. Comparado con nvm
, puede crear múltiples entornos para la misma versión de nodo (por ejemplo, dos entornos para el nodo 0.10
pero con diferentes conjuntos de paquetes).
ENVNAME=dev1
# create an environment
python -m virtualenv ${ENVNAME}
# switch to the newly created env
source ${ENVNAME}/bin/activate
# install nodeenv
pip install nodeenv
# install system''s node into virtualenv
nodeenv --node=system --python-virtualenv
El archivo léame es bastante bueno: nodeenv
La respuesta de Jake se publicó en 2012 y, aunque es útil, hace referencia a los PPA Node.js de Chris Lea, que ya no se actualizan desde marzo de 2015.
Estos son los pasos que uso para instalar Node.js y npm en mi directorio principal:
Instale Node.js con nvm (no se requiere sudo
):
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
source ~/.bashrc
nvm install 7
npm install -g npm # update npm
Ahora puede install -g
sin sudo
y todo entra en ~/.nvm/
O instale Node.js sin nvm ( instrucciones oficiales ):
Instalar Node.js
Node.js v6 (LTS actual a partir de mayo de 2017):
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - sudo apt-get install -y nodejs
Node.js v7:
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash - sudo apt-get install -y nodejs
Cambie el directorio predeterminado de npm a uno local:
mkdir ~/.npm-global
npm config set prefix ''~/.npm-global''
export PATH="$HOME/.npm-global/bin:$PATH" # ← put this line in .bashrc
source ~/.bashrc # if you only updated .bashrc
Alternativamente, reemplace .npm-global
por el directorio de su elección.
Actualice npm y verifique que esté instalado en su directorio $HOME
:
$ npm install npm -g
/home/<username>/.npm-global/bin/npm -> /home/<username>/.npm-global/lib/node_modules/npm/bin/npm-cli.js
/home/<username>/.npm-global/lib
└─┬ [email protected]
├─┬ [email protected]
│ └── [email protected]
├── [email protected]
└── [email protected]
Ahora puede install -g
sin sudo
y sin jugar con los archivos de su sistema.
La solución publicada por Just Jake es genial. Sin embargo, debido a un error con npm> 1.4.10, es posible que no funcione como se esperaba. (Ver this y this )
Mientras se resuelve el error, puede degradar a npm 1.4.10 siguiendo estos pasos:
- Comenta la línea de prefijo en $ HOME / .npmrc
- Ejecute
sudo npm install -g [email protected]
- Asegúrese de que esté instalada la versión correcta de npm (
npm --version
) - Descomenta la línea de prefijo en $ HOME / .npmrc
- Proceda a instalar sus paquetes globales en su carpeta de inicio !.
NPM ya instalará paquetes locales en sus proyectos, pero todavía me gusta mantener el sistema alejado de los archivos de mi sistema operativo. Así es como sugiero compartimentar los paquetes de Nodejs:
Instale Nodejs y NPM a través del PPA chris-lea. Luego configuré una raíz de paquete en mi homedir para mantener los paquetes Node "globales":
$ NPM_PACKAGES="$HOME/.npm-packages"
$ mkdir -p "$NPM_PACKAGES"
Establezca NPM para usar este directorio para sus instalaciones globales de paquetes:
$ echo "prefix = $NPM_PACKAGES" >> ~/.npmrc
Configure su PATH y MANPATH para ver los comandos en su prefijo $ NPM_PACKAGES agregando lo siguiente a su .zshrc / .bashrc:
# NPM packages in homedir
NPM_PACKAGES="$HOME/.npm-packages"
# Tell our environment about user-installed node tools
PATH="$NPM_PACKAGES/bin:$PATH"
# Unset manpath so we can inherit from /etc/manpath via the `manpath` command
unset MANPATH # delete if you already modified MANPATH elsewhere in your configuration
MANPATH="$NPM_PACKAGES/share/man:$(manpath)"
# Tell Node about these packages
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
Ahora cuando hagas una npm install -g
, NPM instalará las bibliotecas en ~/.npm-packages/lib/node_modules
, y vinculará las herramientas ejecutables en ~/.npm-packages/bin
, que está en tu PATH
.
Simplemente use npm install -g
como lo haría normalmente:
[justjake@marathon:~] $ npm install -g coffee-script
... (npm downloads stuff) ...
/home/justjake/.npm-packages/bin/coffee -> /home/justjake/.npm-packages/lib/node_modules/coffee-script/bin/coffee
/home/justjake/.npm-packages/bin/cake -> /home/justjake/.npm-packages/lib/node_modules/coffee-script/bin/cake
[email protected] /home/justjake/.npm-packages/lib/node_modules/coffee-script
[justjake@marathon:~] $ which coffee
/home/justjake/.npm-packages/bin/coffee
Para ampliar la respuesta proporcionada por Just Jake y user1533401: No puedo degradar como uso el alojamiento compartido y el nodo está instalado en un directorio del sistema. Este es también el motivo por el que he cambiado el directorio donde npm instala scripts globales si quiero que haga eso. Para los que están en el mismo bote, aquí hay otra solución temporal que encontré que funciona:
npm install -g --prefix=$(npm config get prefix) <package>
El error es que npm no lee su archivo de configuración por usuario, pero al especificarlo cada vez que instala un script global corrige eso. Encontrado this .
Utilicé la solution @ just-jake por un tiempo y descubrí que nvm es más fácil de configurar. También es una solución mucho poderosa que permite instalar y usar diferentes versiones de nodejs
.
En Ubuntu 14.04 o 16.04:
Instale paquetes de requisitos previos para construir
nodejs
:sudo apt-get update sudo apt-get install build-essential libssl-dev
Instalar nvm :
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
En caso de que la versión más nueva de nvm esté disponible, puede encontrar el comando de instalación real en el sitio nvm .
nvm
installer agregará el script bootstrap a~/.bashrc
, por lo que necesita volver a abrir el terminal para ejecutarlo o hacer:source ~/.bashrc
Ahora puede instalar cualquier versión de
nodejs
desee, cambiar entre ellos, etc.Use
nvm ls-remote
para enumerar las versiones denodejs
disponibles.Para instalar, por ejemplo,
nodejs
v4.2.4 do:# install v4.2.4 nvm install v4.2.4 # use nodejs v4.2.4 in the current terminal session nvm use v4.2.4 # use v4.2.4 by default in new terminal session nvm alias default v4.2.4