Pregunta Instalar NPM en el directorio de inicio con el paquete de distribución nodejs (Ubuntu)


Me gustaría utilizar los paquetes de distribución Node.js (o el chris-lea ppa para versiones más recientes) pero instale 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.

Parece que el segundo enlace podría funcionar con los paquetes de distribución nodejs, pero parece bastante incompleto.

Actualizar  esta pasta resume el segundo enlace de arriba, pero no funciona para mí (parece que npm ignora ~ / .npmrc, al menos durante la instalación).


73
2018-04-09 23:45


origen


Respuestas:


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 haces un npm install -g, NPM instalará las bibliotecas en ~/.npm-packages/lib/node_modulesy enlazar herramientas ejecutables a ~/.npm-packages/bin, que está en tu PATH.

Solo usa 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
coffee-script@1.3.3 /home/justjake/.npm-packages/lib/node_modules/coffee-script

[justjake@marathon:~] $ which coffee
/home/justjake/.npm-packages/bin/coffee

175
2017-10-22 23:51



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:

Instalar Node.js con nvm (no sudo necesario):

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 usted 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 reemplazar .npm-global por el directorio de su elección.

Actualiza npm y comprueba que esté instalado en tu $HOME directorio:

$ 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
└─┬ npm@3.10.6 
  ├─┬ glob@7.0.5 
  │ └── minimatch@3.0.2 
  ├── npm-user-validate@0.1.5 
  └── rimraf@2.5.3 

Ahora usted puede install -g sin sudo y sin jugar con los archivos de tu sistema.


20
2017-09-07 15:18



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 esta y esta)

Mientras se resuelve el error, puede degradar a npm 1.4.10 siguiendo estos pasos:

  1. Comenta la línea de prefijo en $ HOME / .npmrc
  2. correr sudo npm install -g npm@1.4.10
  3. Asegúrese de que esté instalada la versión correcta de npm (npm --version)
  4. Descomenta la línea de prefijo en $ HOME / .npmrc
  5. Proceda a instalar sus paquetes globales en su carpeta de inicio !.

5
2018-06-26 13:16



Porque Python ya hace un gran trabajo virtualenv, Yo suelo nodeenv. Comparado con nvm, puede crear múltiples entornos para la misma versión de nodo (por ejemplo, dos entornos para 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: https://github.com/ekalinin/nodeenv


3
2018-01-19 18:33



Usé @ just-jake solución por algún tiempo y descubrió 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:

  1. Instalar paquetes de requisitos previos para la construcción nodejs:

    sudo apt-get update
    sudo apt-get install build-essential libssl-dev
    
  2. 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 nvm sitio.

  3. nvm instalador agregará secuencia de comandos bootstrap a ~/.bashrc, entonces necesita volver a abrir la terminal para ejecutarla, o hacer:

    source ~/.bashrc
    
  4. Ahora puedes instalar cualquier nodejs versión que te gusta, alternar entre ellos, etc.

    Utilizar nvm ls-remote lista disponible nodejs versiones.

    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
    

2
2017-12-25 23:34



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. Encontró aquí.


1
2017-07-27 20:03



Considera usar nvm. Le permite instalar y cambiar entre versiones de nodo y la carpeta de paquetes globales se configura dentro de su directorio de inicio.

p.ej

// instala un nuevo env

nvm install 8.9.4

// cambiar a env

nvm use 8.9.4

// esto te dice dónde -g se instala

npm list -g

// opcionalmente también

nvm ls

nvm alias por defecto v8.9.4


0
2017-07-25 12:41



Como ya se dijo aquí y aquí 

npm config set prefix ~
echo export PATH=\$PATH:\~/bin >> ~/.bashrc
. ~/.bashrc

-1
2017-09-01 21:17