javascript - instalar - npm gulp
¿Por qué necesitamos instalar Gulp global y localmente? (6)
Al instalar una herramienta globalmente, un usuario debe utilizarla como una utilidad de línea de comandos 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 utilidad npx
empaquetada con npm
5.2
resuelve este problema. Con él puede invocar utilidades instaladas localmente como utilidades instaladas globalmente (pero debe comenzar el comando con npx
). Por ejemplo, si desea invocar un eslint
instalado localmente, puede hacer:
npx eslint .
npm <5.2
Cuando se usa en un campo de script
de su package.json, npm
busca a node_modules
para la herramienta, así como a los módulos instalados globalmente, por lo que la instalación local es suficiente.
Por lo tanto, si está satisfecho con (en su package.json):
"devDependencies": {
"gulp": "3.5.2"
}
"scripts": {
"test": "gulp test"
}
etc. y ejecutando con npm run test
entonces no debería necesitar la instalación global.
Ambos métodos son útiles para que la gente configure su proyecto, ya que no es necesario sudo
. También significa que gulp
se actualizará cuando la versión se incluya en package.json, por lo que todos usarán la misma versión de gulp cuando desarrollen con su proyecto.
Apéndice:
Parece que Gulp tiene algún 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 precisa requiere una instalación local excelente para funcionar. Sin embargo, la respuesta anterior sigue en pie. Las instalaciones locales siempre son preferibles a las instalaciones globales.
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?
La pregunta " ¿Por qué necesitamos instalar Gulp global y localmente? " 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:
- Incluir las dependencias de su proyecto de manera local garantiza que la versión de Gulp (u otras dependencias) utilizada sea la versión original.
- Node no considera los módulos globales de forma predeterminada cuando se utiliza require () (que debe incluir en su script). En última instancia, esto se debe a que la ruta a los módulos globales no se agrega a NODE_PATH de forma predeterminada.
- Según el equipo de desarrollo de Node, los módulos locales se cargan más rápido. No puedo decir por qué esto es así, pero esto parece ser más relevante para el uso del nodo en la producción (es decir, las dependencias en tiempo de ejecución) que en el desarrollo (es decir, las dependencias de desarrollo). Supongo que esta es una razón legítima, ya que a algunos les puede importar la pequeña ventaja de velocidad que se obtiene al cargar los módulos locales frente a los globales, pero siéntase libre de levantar la vista ante esta razón.
¿Por qué necesito instalar gulp globalmente si ya lo he instalado localmente?
- La razón para instalar gulp globalmente es realmente solo la conveniencia de que el ejecutable de Gulp se encuentre automáticamente en la ruta de su sistema.
Para evitar la instalación local, puede usar npm link [package]
, pero el comando de enlace, así como el comando de install --global
, no parecen admitir la opción --save-dev
, lo que significa que no parece ser fácil forma de instalar gulp globalmente y luego agregar fácilmente cualquier versión que sea a 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 peleando un poco con las herramientas cuando vas contra el grano.
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 buena idea instalar Gulp solo localmente. Teníamos que hacerlo debido a nuestro entorno de construcción. Pero no recomendaría instalar Gulp de forma global si no fuera absolutamente necesario. Nos enfrentamos a problemas similares como se describe en la siguiente blog-post
Ninguno de estos problemas surge para ninguno de nuestros desarrolladores en sus máquinas locales porque todos se instalaron de forma global. En el sistema de compilación tuvimos los problemas descritos. Si alguien está interesado, podría profundizar más en este tema. Pero ahora solo quiero mencionar que no es una ruta fácil para instalar trago solo localmente.
Puede vincular el truco instalado globalmente localmente con
npm link gulp
Técnicamente, no necesita instalarlo globalmente si la carpeta node_modules
en su instalación local está en su PATH
. En general, esto no es una buena idea.
Alternativamente, si npm test
referencias de npm test
son npm test
simplemente puede escribir la npm test
y ejecutará el npm test
local.
Nunca he instalado trago globalmente, creo que es de mala forma.
TLDR; He aquí por why :
La razón por la que esto funciona es porque
gulp
intenta ejecutargulpfile.js
usando su versión localmente instalada degulp
, vea here . De ahí el motivo de una instalación global y local de gulp.
Esencialmente, cuando instala gulp
localmente, el script no está en su PATH
y, por lo tanto, no puede simplemente escribir gulp
y esperar que el shell encuentre el comando. Al instalarlo globalmente, el script gulp
se introduce en su PATH
porque el directorio global node/bin/
es más probable que se encuentre en su ruta.
Sin embargo, para respetar sus dependencias locales, gulp
usará su versión local instalada de sí mismo para ejecutar gulpfile.js
.