Pregunta Diferencia entre Grunt, NPM y Bower (package.json vs bower.json)


Soy nuevo en el uso de npm y bower, construyendo mi primera aplicación en emberjs :).
Tengo un poco de experiencia con los rieles, por lo que estoy familiarizado con la idea de los archivos para listar dependencias (como el paquete Gemfile)

Pregunta: cuando quiero agregar un paquete (y verificar la dependencia en git), ¿a dónde pertenece? package.json o en bower.json?

Por lo que sé,
corriendo bower install buscará el paquete y lo pondrá en /vendor directorio,
corriendo npm install lo buscará y lo pondrá en /node_modules directorio.

Esta respuesta SO dice que Bower es para front-end y npm es para backend.
Ember-app-kit parece adherirse a esta distinción desde el primer vistazo ... Pero las instrucciones en gruntfile para habilitando alguna funcionalidad dar dos comandos explícitos, entonces estoy totalmente confundido aquí.

Intuitivamente, supongo que

  1. npm install --save-dev nombre-paquete sería equivalente a agregar el nombre del paquete a mi paquete.json

  2. bower install --guarde el nombre del paquete podría ser lo mismo que agregar el paquete a mi bower.json y corriendo bower instalar?

Si ese es el caso, ¿cuándo debería instalar paquetes explícitamente así sin agregarlos al archivo que gestiona las dependencias (además de instalar herramientas de línea de comandos globalmente)?


568
2018-01-18 01:36


origen


Respuestas:


Actualización para mediados de 2016:

Las cosas están cambiando tan rápido que, si es a finales de 2017, ¡esta respuesta podría no estar actualizada!

Los principiantes pueden perderse rápidamente en la elección de las herramientas de compilación y los flujos de trabajo, pero lo que está más actualizado en 2016 es ¡no usar Bower, Grunt o Gulp en absoluto! ¡Con la ayuda de Webpack puedes hacer todo directamente en NPM!

No me malinterpreten. La gente usa otros flujos de trabajo y yo sigo usando GULP en mi proyecto heredado (pero me estoy moviendo lentamente de él), pero así es como se hace en las mejores compañías y desarrolladores que trabajan en este flujo de trabajo ¡ganan MUCHO dinero!

Mire esta plantilla, es una configuración muy actualizada que consiste en una combinación de las mejores y las últimas tecnologías: https://github.com/coryhouse/react-slingshot

  • Webpack
  • NPM como herramienta de compilación (sin Gulp, Grunt o Bower)
  • Reacciona con Redux
  • ESLint
  • la lista es larga ¡Ve y explora!

Tus preguntas:

Cuando quiero agregar un paquete (y verificar la dependencia en git),   ¿A dónde pertenece? en package.json o en bower.json

  • Todo pertenece en package.json ahora

  • Las dependencias requeridas para la construcción están en "devDependencies", es decir npm install require-dir --save-dev (--save-dev actualiza su paquete.json agregando una entrada a devDependencies)

  • Las dependencias requeridas para su aplicación durante el tiempo de ejecución están en "dependencias", es decir npm install lodash --save(--save actualiza su paquete.json agregando una entrada a las dependencias)

Si ese es el caso, ¿cuándo debería instalar paquetes explícitamente así sin agregarlos al archivo que gestiona las dependencias (además de instalar herramientas de línea de comandos globalmente)?

Siempre. Solo por comodidad. Cuando agrega una bandera (--save-dev o --save) el archivo que gestiona deps (package.json) se actualiza automáticamente. No pierdas tiempo editando dependencias manualmente. Acceso directo para npm install --save-dev package-name es npm i -D package-name y atajo para npm install --save package-name es npm i -S package-name


138
2017-08-30 18:37



Npm y Bower son ambas herramientas de administración de dependencia. Pero la principal diferencia entre ambos es npm se usa para instalar módulos Node js pero bower js se usa para administrar componentes frontales como html, css, js, etc..

Un hecho que hace esto más confuso es que npm proporciona algunos paquetes que también se pueden usar en el desarrollo de aplicaciones para el usuario, como grunt y jshint.

Estas líneas agregan más significado

Bower, a diferencia de npm, puede tener varios archivos (por ejemplo, .js, .css, .html, .png, .ttf) que se consideran los archivos principales. Bower considera semánticamente estos archivos principales, cuando se empaquetan juntos, un componente.

Editar: Gruñido es bastante diferente de Npm y Bower. Grunt es una herramienta de corredor de tareas javascript. Puedes hacer muchas cosas usando el gruñido, que de otro modo tendrías que hacer manualmente. Destacando algunos de los usos de Grunt:

  1. Comprimir algunos archivos (por ejemplo, complemento zipup)
  2. Linting en archivos js (jshint)
  3. Compilando menos archivos (grunt-contrib-less)

Hay plugins grunt para la compilación sass, uglifying su javascript, copiar archivos / carpetas, minifying Javascript, etc.

Tenga en cuenta que el plugin grunt también es un paquete npm.

Pregunta 1

Cuando quiero agregar un paquete (y verificar la dependencia en git), ¿a dónde pertenece? En package.json o en bower.json

Realmente depende a dónde pertenece este paquete. Si se trata de un módulo de nodo (como grunt, request), irá en package.json de lo contrario a bower json.

Pregunta 2

¿Cuándo debería instalar paquetes explícitamente así sin agregarlos al archivo que gestiona las dependencias?

No importa si está instalando paquetes explícitamente o mencionando la dependencia en el archivo .json. Supongamos que está en el medio de trabajar en un proyecto de nodo y necesita otro proyecto, por ejemplo request, entonces tienes dos opciones:

  • Edite el archivo package.json y agregue una dependencia en 'request'
  • npm instalar

O

  • Use la línea de comando: npm install --save request

--save options agrega la dependencia al archivo package.json también. Si no especifica --save opción, solo descargará el paquete, pero el archivo json no se verá afectado.

Puedes hacer esto de cualquier manera, no habrá una diferencia sustancial.


555
2018-01-18 01:45