2 manuales sobre gulp dicen que necesito instalar gulp primero globalmente (con el indicador -g) y luego una vez más localmente. ¿Por qué necesito esto?
javascript
gulp
Stepan Suvorov
fuente
fuente
Respuestas:
Al instalar una herramienta globalmente, debe ser utilizada por un usuario como una utilidad de línea de comando en cualquier lugar, incluso fuera de los proyectos de nodo. Las instalaciones globales para un proyecto de nodo son malas porque dificultan la implementación.
npm 5.2+
La
npx
utilidad incluida connpm
5.2
resuelve este problema. Con él puede invocar utilidades instaladas localmente como utilidades instaladas globalmente (pero debe comenzar el comando connpx
). Por ejemplo, si desea invocar a un local instaladoeslint
, puede hacer:npm <5.2
Cuando se usa en un
script
campo de su package.json,npm
buscanode_modules
la herramienta y los módulos instalados globalmente, por lo que la instalación local es suficiente.Entonces, si está satisfecho con (en su package.json):
etc. y ejecutando con,
npm run test
entonces no debería necesitar la instalación global en absoluto.Ambos métodos son útiles para que las personas configuren su proyecto, ya
sudo
que no es necesario. También significa quegulp
se actualizará cuando la versión se encuentre en el paquete.json, por lo que todos usarán la misma versión de Gulp cuando desarrollen con su proyecto.Apéndice:
Parece que tragar tiene un comportamiento inusual cuando se usa globalmente. Cuando se usa como una instalación global, gulp busca un trago instalado localmente para pasarle el control. Por lo tanto, una instalación global de Gulp requiere una instalación local de Gulp para funcionar. Sin embargo, la respuesta anterior sigue en pie. Las instalaciones locales siempre son preferibles a las instalaciones globales.
fuente
./node_modules/.bin/gulp
.gulp
ycoffee
lo que los comandos trabajar desde mi nodo raíz del proyecto (por ejemplo.alias gulp="node_modules/.bin/gulp"
). De esta forma, los comandos son fáciles de usar si es necesario y no se producen conflictos de versión global / local.gulp
, me da el siguiente mensaje de errorLocal gulp not found in ...
. Por lo que yo entiendo, primero debería mirar a los nodos locales_módulos y, si no se encuentra, debería mirar a los módulos instalados globalmente, ¿no? ¡Gracias!TLDR; He aquí por qué :
Esencialmente, cuando instala
gulp
localmente, el script no está en suPATH
archivo y, por lo tanto, no puede simplemente escribirgulp
y esperar que el shell encuentre el comando. Al instalarlo globalmente, elgulp
script ingresa a ustedPATH
porque elnode/bin/
directorio global probablemente se encuentre en su ruta.Sin embargo, para respetar sus dependencias locales,
gulp
usará su versión instalada localmente para ejecutar elgulpfile.js
.fuente
gulp
paquete instalado globalmente es necesario para ponerlonode_modules/.bin/gulp
en ruta. El almacenamiento es barato, pero tirar MB para simular un enlace simbólico es un descuido IMO.Puede vincular
gulp
localmente instalado globalmente confuente
npm link
.La pregunta " ¿Por qué necesitamos instalar gulp a nivel mundial y local? " Se puede dividir en las siguientes dos preguntas:
¿Por qué necesito instalar Gulp localmente si ya lo he instalado globalmente?
¿Por qué necesito instalar Gulp globalmente si ya lo he instalado localmente?
Varios otros han proporcionado excelentes respuestas a estas preguntas de forma aislada, pero pensé que sería beneficioso consolidar la información en una respuesta unificada.
¿Por qué necesito instalar Gulp localmente si ya lo he instalado globalmente?
La razón para instalar Gulp localmente se compone de varias razones:
¿Por qué necesito instalar Gulp globalmente si ya lo he instalado localmente?
Para evitar la instalación local, puede usar
npm link [package]
, pero el comando de enlace y elinstall --global
comando no parecen admitir la--save-dev
opción, lo que significa que no parece haber una manera fácil de instalar Gulp a nivel mundial y luego agregar fácilmente cualquier versión que sea su archivo package.json local.En última instancia, creo que tiene más sentido tener la opción de usar módulos globales para evitar tener que duplicar la instalación de herramientas comunes en todos sus proyectos, especialmente en el caso de herramientas de desarrollo como grunt, gulp, jshint, etc. Desafortunadamente Parece que terminas luchando un poco contra las herramientas cuando vas contra la corriente.
fuente
Técnicamente, no necesita instalarlo globalmente si la
node_modules
carpeta en su instalación local está en suPATH
. En general, esta no es una buena idea.Alternativamente, si se trata de
npm test
referenciasgulp
, puede escribirnpm test
y ejecutará el trago local.Nunca he instalado gulp a nivel mundial, creo que es una mala forma.
fuente
No estoy seguro de si nuestro problema estaba directamente relacionado con la instalación de gulp solo localmente. Pero tuvimos que instalar un montón de dependencias nosotros mismos. Esto condujo a un paquete "enorme". Json y no estamos seguros de si realmente es una gran idea instalar gulp solo localmente. Tuvimos que hacerlo debido a nuestro entorno de construcción. Pero no recomendaría instalar Gulp no globalmente si no es absolutamente necesario. Nos enfrentamos a problemas similares a los descritos en la siguiente publicación de blog.
Ninguno de estos problemas surge para ninguno de nuestros desarrolladores en sus máquinas locales porque todos instalaron trago globalmente. En el sistema de compilación tuvimos los problemas descritos. Si alguien está interesado, podría profundizar en este tema. Pero en este momento solo quería mencionar que no es un camino fácil para instalar gulp solo localmente.
fuente
Solo porque no lo he visto aquí, si está en MacOS o Linux, le sugiero que agregue esto a su RUTA (en su bashrc, etc.):
Con esta entrada de ruta relativa, si está sentado en la carpeta raíz de cualquier proyecto de nodo, puede ejecutar cualquier herramienta de línea de comando (eslint, gulp, etc., etc.) sin preocuparse por las "instalaciones globales" o
npm run
etc.Una vez que hice esto, nunca instalé un módulo a nivel mundial.
fuente