subir node leer framework archivos node.js package npm directory-structure

leer - ¿Dónde pone node.js sus archivos?



subir archivos node js (3)

Recientemente comencé a jugar con node.js, pero me perdí en un gran lío de versiones diferentes de node, npm, nvm y otros paquetes. No sé qué se instala de forma global y qué se instala localmente (y si es localmente, ¿cómo saben los paquetes qué versiones de nodo pueden usar?).

Me gustaría tener un resumen de las diferentes opciones de instalación. En específico:

  • ¿Dónde está instalado el nodo cuando uso nvm , apt-get , make install o cuando utilizo otras formas?
  • ¿Es una buena idea instalar un nodo localmente?
  • ¿Por qué nvm cambia mi ~/.profile lugar de instalarse en una carpeta bin reconocible por el sistema?
  • Vi que nvm puede instalar diferentes versiones de nodo uno al lado del otro, ¿por qué querría hacer esto? Puedo instalarlos localmente, ¿no?
  • ¿ npm instala npm paquetes? Vi que comprueba paquetes de una versión actual de Node, ¿qué ocurre con estos paquetes cuando se actualiza el nodo?
  • ¿En qué casos es mejor usar la instalación global o local? ¿Dónde debo poner mis paquetes entonces (y dónde se colocan por defecto?)
  • ¿Cuál es la diferencia entre npm , nvm y nave ?

EDITAR: Hay muchas maneras de instalar el nodo aquí , esto me hace aún más confundido ...


¿Dónde está instalado el nodo cuando uso nvm, apt-get, make install o cuando utilizo otras formas?

apt-get instala todo el software, no solo el nodo, en el sistema de archivos siguiendo la convención de Ubuntu donde almacenar binarios, archivos man, archivos compartidos, registros, etc. Sin embargo, al usar apt-get solo tendrá la versión determinada de nodo que está determinado por el ciclo de liberación de la distribución. Si hay actualizaciones disponibles, se instalarán con la apt-get update; apt-get upgrade apt-get update; apt-get upgrade Sin embargo, la última versión de alguna aplicación no estará disponible hasta que llegue a la distribución. Por ejemplo, el nodo v0.xy podría no estar disponible hasta Ubuntu 13.10, la única forma de obtenerlo será instalarlo manualmente. El lado positivo de apt-get u otro administrador de paquetes del sistema es que gestiona las actualizaciones y la eliminación del paquete por usted. Almacena todos los datos sobre el paquete de software en su propia base de datos. Siempre puedes eliminar el nodo con apt-get remove node y eso es todo.

make install instala el paquete manualmente, pero se considera dañino. Nunca use make install principalmente porque no podrá eliminar el paquete fácilmente, tendrá que leer el archivo Makefile y eliminar manualmente todos los archivos instalados por él. En una situación en la que desee usar make install siempre hay una make install checkinstall disponible. Es un software que crea un paquete nativo y lo registra con el sistema. Cuando decide eliminar el paquete, puede hacer esto con un comando en lugar de muchos. enlace wiki ; Guía de Ubuntu en la instalación de verificación

Ahora la secuencia de comandos nvm es un node version manager . Es muy útil y fácil de usar. Le permite tener múltiples versiones de nodo para instalar y usar en paralelo en su máquina. No compila el nodo desde la fuente como make install por lo que es muy rápido. no depende de su ciclo de publicación de distribución por lo que tiene acceso a todas las versiones de nodo disponibles en este momento. nvm descarga binarios precompilados y es perfecto para uso general. Almacena sus archivos de nodo en su propia carpeta de forma local, por lo que, en caso de que desee comparar algo entre las diferentes versiones de nodo, es fácil de hacer.

¿Es una buena idea instalar un nodo localmente?

Si de forma local te refieres a usar nvm entonces es muy bueno para el desarrollo y las pruebas. No estoy seguro sobre las implicaciones y los beneficios del rendimiento de producción entre tener instalado desde la fuente o usar los binarios precompilados nvm . Uso nvm para desarrollo e instalado desde la fuente en producción. Sin embargo, si alguien puede explicar este problema más adelante, estaré encantado de aprender más.

¿Por qué nvm cambia mi ~ / .profile en lugar de instalarse en una carpeta bin reconocible por el sistema?

Porque nvm no es un ejecutable. Es un conjunto de funciones bash que se obtienen de shell y se pueden usar por separado. Puede invocar nvm_ls y nvm_ls_remote y otros sin el script principal después de que sourced en su shell. Lo que la secuencia de comandos principal analiza los argumentos de la línea de comandos e imprime bastante la salida en el caso de, por ejemplo, `nvm_ls_remote ''.

en el ~ / .profile se agrega la siguiente línea

[[ -s /home/USERNAME/.nvm/nvm.sh ]] && . /home/USERANME/.nvm/nvm.sh # This loads NVM

carga todas las funciones en tu caparazón

Vi que nvm puede instalar diferentes versiones de nodo uno al lado del otro, ¿por qué querría hacer esto? Puedo instalarlos localmente, ¿no?

Puedes instalarlos localmente usando make install o checkinstall pero tendrás que crear alias para ellos como node_0.8.1, node_0.8.2, node_0.10.1, etc. Y tendrás que administrar nuevos alias, instalar todos los paquetes, eliminar ellos en caso de que no los necesites MISMO. Estas son tareas tediosas y aburridas que a veces pueden ser propensas a errores. nvm realiza todas estas tareas de forma gratuita.

Desea hacer esto para probar su aplicación en las diferentes versiones de nodo. Por ejemplo, usted es bueno y está probado en la v0.8, pero desea usar las nuevas características de la v0.10.3 ¿cómo lo hace? Tienes que descargar el código fuente, compilar, crear un alias y ejecutar tu aplicación. Puedes hacer esto con solo nvm install 0.10.3 y ejecutar tu aplicación. En ocasiones, debe admitir más de una versión de nodo. Por ejemplo, algunos entornos alojados no se mantienen en contacto con la última versión y solo tienen v0.6. Es posible que los clientes que usan la aplicación de servidor encuentren un error específico para esta versión. Cuando arreglas el error, primero debes reproducirlo. Usando nvm instalación de v0.6 es de una línea y medio minuto. Y puede verificar todas las versiones que desee de esta manera fácilmente. Pruebe su código en diferentes versiones y asegúrese de que está listo para comenzar.

¿Dónde instala npm los paquetes? Vi que comprueba paquetes de una versión actual de Node, ¿qué ocurre con estos paquetes cuando se actualiza el nodo?

Si está utilizando nvm los paquetes que están instalados globalmente con la opción -g están vinculados a la versión del nodo correspondiente. Cuando cambia entre las versiones con nvm use 0.x , tiene que nvm use 0.x a instalar los paquetes o usar nvm copy-packages <version> para usar los paquetes en la versión actual. Si los paquetes se instalan localmente, entonces depende. package.json debe contener información sobre las dependencias de la aplicación. Si dice node: ''0.8'' y acaba de actualizar a 0.9, puede encontrar problemas. Por ejemplo, el comportamiento de process.nextTick se modificó en las últimas versiones en comparación con 0.6. Así que ten cuidado.

¿En qué casos es mejor usar la instalación global o local? ¿Dónde debo poner mis paquetes entonces (y dónde se colocan por defecto?)

Depende. Para el desarrollo nvm es superior en mi opinión. Para mí es conveniente y simple. Para la producción, puede haber algunas implicaciones de rendimiento al usar los archivos binarios precompilados no optimizados para su sistema. Sería mejor preguntar esto como una pregunta separada para que las personas con la experiencia relevante puedan responder.

¿Cuál es la diferencia entre npm, nvm y nave?

npm es un node package manager -> link Contiene paquetes de usuario desarrollados por otras personas. Estos paquetes no son parte del núcleo del nodo. npm se usa para publicar su código y administración de dependencias. Si su aplicación requiere otra aplicación desarrollada por otras personas, es conveniente publicarla a través de npm.

nvm es un node version manager que hace una cosa completamente separada. Le da la capacidad de cambiar fácilmente entre versiones de nodo en la misma máquina y administra todo lo que cambia en su $PATH entorno $PATH .

Considere nvm como administrador de actualizaciones para el sistema operativo y npm como administrador de las aplicaciones para este sistema. Bueno, esta comparación no es precisa, pero me vino a la mente

nave es básicamente lo mismo que nvm pero es un ejecutable, mientras que nvm es un script que se origina en el shell. Cada sistema tiene sus propios beneficios. Puede hacer una pregunta por separado con respecto a sus casos de uso y diferencias.

Mi respuesta no está completa al 100% y contiene muchas opiniones personales subjetivas. Sin embargo, espero que al menos aclare algunos puntos para que pueda continuar con otras preguntas más específicas. Por cierto, esta lista de preguntas tuya podría formularse como preguntas separadas. Creo que ofrece mejores resultados cuando se hacen preguntas específicas por separado y más personas con experiencia relevante podrían contribuir.


Puede instalar módulos en el contexto local de su aplicación con

npm install modulename

En este caso, el módulo se instalará en la carpeta node_modules de su aplicación.

De lo contrario, puede instalar un módulo en el contexto global con

npm install -g modulename

En este caso, el módulo se instalará para el entorno del sistema de orificios generalmente en / usr / local / bin / modulename.

La instalación global tiene sentido para los módulos que necesita en más de una aplicación, como expreso o inspector de nodos.


Si tu corres

npm install

en folser con package.json, instala todos los paquetes localmente (en la carpeta actual).

Además, npm instala paquetes de instalación locales de forma predeterminada. Para instalarlo globalmente, use la bandera -g:

npm install -g <package>

Ejecute el próximo comando:

npm config list

Usted ve toda la descripción de configuración de npm