Question Différence entre Grunt, NPM et Bower (package.json vs bower.json)


Je suis nouveau à l'utilisation de npm et bower, la construction de ma première application en emberjs :).
J'ai un peu d'expérience avec les rails, donc je suis familier avec l'idée de fichiers pour la liste des dépendances (comme le bundler Gemfile)

Question: quand je veux ajouter un paquet (et vérifier la dépendance dans git), d'où vient-il - dans package.json ou dans bower.json?

À partir de ce que je rassemble,
fonctionnement bower install va chercher le paquet et le mettre en /vendor annuaire,
fonctionnement npm install il va le chercher et le mettre dans /node_modules annuaire.

Cette réponse SO dit bower est pour front-end et npm est pour les choses backend.
Ember-app-kit semble adhérer à cette distinction dès le premier coup d'oeil ... Mais des instructions dans gruntfile pour permettant certaines fonctionnalités donner deux commandes explicites, donc je suis totalement confus ici.

Intuitivement je devinerais que

  1. npm installer --save-dev nom-package équivaudrait à ajouter le nom de package à mon package.json

  2. bower installer --save nom-package pourrait être le même que l'ajout du paquet à mon bower.json et courir installation de bower?

Si tel est le cas, quand dois-je jamais installer des paquets explicitement comme ça sans les ajouter au fichier qui gère les dépendances (en dehors de l'installation globale des outils de ligne de commande)?


568
2018-01-18 01:36


origine


Réponses:


Mise à jour pour la mi-2016:

Les choses changent tellement vite que si nous sommes en fin d'année 2017, cette réponse pourrait ne plus être à jour!

Les débutants peuvent rapidement se perdre dans le choix des outils de construction et des flux de travail, mais ce qui est le plus à jour en 2016 n'utilise pas Bower, Grunt ou Gulp du tout! Avec l'aide de Webpack, vous pouvez tout faire directement dans NPM!

Ne vous méprenez pas, les gens utilisent d'autres workflows et j'utilise toujours GULP dans mon projet existant (mais je m'en écarte lentement), mais c'est ainsi que les meilleures entreprises et développeurs travaillant dans ce workflow font beaucoup d'argent!

Regardez ce modèle c'est une configuration très à jour composée d'un mélange des meilleures et des dernières technologies: https://github.com/coryhouse/react-slingshot

  • Webpack
  • NPM comme un outil de construction (pas de Gulp, Grunt ou Bower)
  • Réagir avec Redux
  • ESLint
  • la liste est longue. Allez et explorez!

Vos questions:

Quand je veux ajouter un paquet (et vérifier la dépendance dans git),   d'où vient-il - dans package.json ou dans bower.json

  • Tout appartient à package.json maintenant

  • Les dépendances requises pour la construction sont dans "devDependencies" c'est-à-dire npm install require-dir --save-dev (--save-dev met à jour votre package.json en ajoutant une entrée à devDependencies)

  • Les dépendances requises pour votre application pendant l'exécution sont en "dépendances", c'est-à-dire npm install lodash --save(--save met à jour votre package.json en ajoutant une entrée aux dépendances)

Si tel est le cas, quand dois-je jamais installer des paquets explicitement comme ça sans les ajouter au fichier qui gère les dépendances (en dehors de l'installation globale des outils de ligne de commande)?

Toujours. Juste à cause du confort. Lorsque vous ajoutez un drapeau (--save-dev ou --save) le fichier qui gère les deps (package.json) est automatiquement mis à jour. Ne perdez pas de temps en modifiant manuellement les dépendances. Raccourci pour npm install --save-dev package-name est npm i -D package-name et raccourci pour npm install --save package-name est npm i -S package-name


138
2017-08-30 18:37



NPM et Bower sont tous deux des outils de gestion des dépendances. Mais la principale différence entre les deux est npm est utilisé pour installer les modules Node js mais bower js est utilisé pour gérer les composants frontaux comme html, css, js etc.

Un fait qui rend cela plus confus est que npm fournit des paquets qui peuvent aussi être utilisés dans le développement frontal, comme grunt et jshint.

Ces lignes ajoutent plus de sens

Bower, contrairement à npm, peut avoir plusieurs fichiers (par exemple .js, .css, .html, .png, .ttf) qui sont considérés comme les fichiers principaux. Bower considère sémantiquement ces fichiers principaux, lorsqu'ils sont empaquetés ensemble, comme un composant.

modifier: Grognement est assez différent de NPM et Bower. Grunt est un outil de javascript task runner. Vous pouvez faire beaucoup de choses en utilisant grognement que vous deviez faire manuellement sinon. Soulignant certaines des utilisations de Grunt:

  1. Zipper certains fichiers (par exemple, le plugin zipup)
  2. Linting sur les fichiers js (jshint)
  3. Compiler moins de fichiers (grunt-contrib-less)

Il y a des plugins grunt pour la compilation de sass, uglifying votre javascript, copier des dossiers / dossiers, réduire le javascript etc.

S'il vous plaît noter que grunt plugin est également un paquet npm.

Question 1

Quand je veux ajouter un paquet (et vérifier la dépendance dans git), d'où vient-il - dans package.json ou dans bower.json

Cela dépend vraiment de l'appartenance de ce paquet. Si c'est un module de noeud (comme grunt, request) alors il ira dans package.json sinon dans bower json.

Question 2

Quand devrais-je jamais installer des paquets explicitement comme ça sans les ajouter au fichier qui gère les dépendances

Peu importe si vous installez des packages explicitement ou si vous mentionnez la dépendance dans le fichier .json. Supposons que vous êtes en train de travailler sur un projet de nœud et que vous avez besoin d'un autre projet, par exemple request, alors vous avez deux options:

  • Editez le fichier package.json et ajoutez une dépendance à 'request'
  • npm installer

OU

  • Utilisez la ligne de commande: npm install --save request

--save options ajoute également la dépendance au fichier package.json. Si vous ne spécifiez pas --save option, il ne téléchargera que le paquet mais le fichier json ne sera pas affecté.

Vous pouvez le faire de toute façon, il n'y aura pas de différence substantielle.


555
2018-01-18 01:45