mac devdependencies node.js npm windows-7 bower

node.js - devdependencies - npm install--save



Módulos NPM instalados localmente versus instalados globalmente (4)

En mi archivo package.json , he enumerado a Bower como una dependencia. Después de ejecutar npm install , Bower se instala localmente. Cuando intento ejecutar Bower después de instalarlo localmente, aparece un error

"Bower" no se reconoce como un comando interno o externo

Parece que la única forma de resolver esto es instalar Bower globalmente. ¿Por qué debería tener que hacer esto? Si mi proyecto contiene una copia local de Bower, ¿por qué no lo usa el nodo?


La instalación local hace que la glorieta esté disponible para el proyecto actual (donde almacena todos los módulos de nodo en node_modules ). Por lo general, esto solo es bueno para usar un módulo como el var module = require(''module''); No estará disponible como un comando que el shell puede resolver hasta que lo instale globalmente npm install -g module donde npm lo instalará en un lugar donde su variable de ruta resolverá este comando .

Edición: Esta documentación lo explica bastante bien.


Por lo general, instala módulos NPM globalmente si desea que se incluyan en su ruta de acceso desde la línea de comandos. Como se instala localmente, deberá ejecutarlo desde la carpeta node_modules .


Puede ejecutar su instancia local escribiendo la siguiente línea en cmd:

node_modules/bower/bin/bower <bower args>


Usamos PHP y JavaScript, así que tenemos compositor y npm.

Cada uno de los proyectos en los que trabajamos tiene paquetes diferentes tanto para el tiempo de ejecución del paquete como para las herramientas de compilación / desarrollo.

Como hay restricciones de versión en cada proyecto, instalar la versión x de un paquete globalmente (que se ejecutaría desde la línea de comandos), nos causaría problemas, instalamos todas las herramientas en cada paquete. Mucho más fácil de definir en los archivos composer.json / package.json apropiados.

Sin embargo, ejecutar las herramientas CLI es una molestia si tiene que agregar constantemente una ruta adicional al comando.

Para ello, hemos recomendado al equipo que las siguientes rutas se agreguen a su $PATH en el .bashrc apropiado (o equivalente):

./vendor/bin:./node_modules/.bin

(EDIT: para Windows, las rutas serían ./vendor/bin;./node_modules/.bin; )

Entonces, mientras que en el proyecto X, tenemos acceso a las herramientas CLI para ese proyecto. Cambie al proyecto Y, y obtenemos las herramientas de los proyectos.

Claro, va a obtener duplicaciones, pero cada proyecto es mantenido por diferentes equipos (y algunas personas están en varios equipos), así que nuevamente, tener una versión en la configuración global es un problema.