Soy nuevo en el uso de npm y bower, construyendo mi primera aplicación en emberjs :).
Tengo un poco de experiencia con los rieles, así que estoy familiarizado con la idea de los archivos para enumerar dependencias (como el paquete Gemfile)
Pregunta: cuando quiero agregar un paquete (y registrar la dependencia en git), ¿a dónde pertenece: dentro package.json
o dentro bower.json
?
Por lo que sé, la
ejecución bower install
buscará el paquete y lo colocará en el /vendor
directorio, la
ejecutará npm install
lo buscará y lo colocará en el /node_modules
directorio.
Esta respuesta SO dice que bower es para front-end y npm es para cosas de backend.
Ember-app-kit parece adherirse a esta distinción desde el primer vistazo ... Pero las instrucciones en gruntfile para habilitar alguna funcionalidad dan dos comandos explícitos, así que estoy totalmente confundido aquí.
Intuitivamente supongo que
npm install --save-dev nombre-paquete equivaldría a agregar el nombre-paquete a mi paquete.json
bower install --save package-name podría ser lo mismo que agregar el paquete a mi bower.json y ejecutar bower install ?
Si ese es el caso, ¿cuándo debería instalar paquetes explícitamente así sin agregarlos al archivo que administra las dependencias (aparte de instalar herramientas de línea de comandos a nivel mundial)?
fuente
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 herramientas de creación y 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!
Resultado de Google "npm as build tool": https://medium.com/@dabit3/introduction-to-using-npm-as-a-build-tool-b41076f488b0#.c33e74tsa
Paquete web: https://webpack.github.io/docs/installation.html
No me malinterpreten, las personas usan otros flujos de trabajo y yo sigo usando GULP en mi proyecto heredado (pero poco a poco salgo de él), ¡pero así es como se hace en las mejores empresas y desarrolladores que trabajan en este flujo de trabajo y 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
Tus preguntas:
Todo pertenece en package.json ahora
Las dependencias requeridas para la compilación están en "devDependencies", es decir
npm install require-dir --save-dev
(--save-dev actualiza su package.json agregando una entrada a devDependencies)npm install lodash --save
(--save actualiza su package.json agregando una entrada a las dependencias)Siempre . Solo por comodidad. Cuando agrega un indicador (
--save-dev
o--save
), el archivo que administra los deps (package.json) se actualiza automáticamente. No pierdas el tiempo editando dependencias en él manualmente. Atajo paranpm install --save-dev package-name
isnpm i -D package-name
y atajo paranpm install --save package-name
isnpm i -S package-name
fuente
With help of Webpack you can do everything directly in NPM!
Eso no es cierto, uno ni siquiera necesita un paquete web en su flujo de trabajoNpm y Bower son herramientas de gestión de dependencias. Sin embargo, la principal diferencia entre ambos es la NGP se utiliza para la instalación de módulos de nodo js js pero Bower se utiliza para controlar los componentes de front-end como HTML, CSS, JS, etc .
Un hecho que hace que esto sea más confuso es que npm proporciona algunos paquetes que también se pueden usar en el desarrollo front-end, como
grunt
yjshint
.Estas líneas agregan más significado
Editar : Grunt es bastante diferente de Npm y Bower. Grunt es una herramienta de ejecución de tareas de JavaScript. Puedes hacer muchas cosas usando gruñido, que de lo contrario tenías que hacer manualmente. Destacando algunos de los usos de Grunt:
Hay grunt plugins para compilar sass, uglificar su javascript, copiar archivos / carpetas, minificar javascript, etc.
Tenga en cuenta que el complemento Grunt también es un paquete npm.
Pregunta 1
Realmente depende de a dónde pertenece este paquete. Si es un módulo de nodo (como gruñido, solicitud), irá en package.json de lo contrario a bower json.
Pregunta 2
No importa si está instalando paquetes explícitamente o si menciona la dependencia en el archivo .json. Supongamos que está trabajando en un proyecto de nodo y necesita otro proyecto, por ejemplo
request
, tiene dos opciones:O
npm install --save request
--save
opciones agrega la dependencia al archivo package.json también. Si no especifica la--save
opción, solo descargará el paquete, pero el archivo json no se verá afectado.Puede hacerlo de cualquier manera, no habrá una diferencia sustancial.
fuente
npm
solo usa , a diferencia del tutorial v1 que estaba usando npm y bower. Realmente me encantan los hechos de que (a)package.json
es lo único que se debe mantener, (b) que calcula las dependencias de forma recursiva en una líneanpm install
, y (c) cuando hay un problema, solo necesita eliminar lanode_modules
carpeta y ejecutar npm install de nuevo.