Je suis novice dans l'utilisation de npm et de bower, en créant ma première application dans emberjs :).
J'ai un peu d'expérience avec les rails, donc je connais bien l'idée des fichiers pour lister les dépendances (comme le bundle Gemfile)
Question: quand je veux ajouter un paquet (et archiver la dépendance dans git), où appartient-il - dans package.json
ou dans bower.json
?
D'après ce que je comprends , l'
exécution bower install
récupérera le paquet et le placera dans le /vendor
répertoire, l'
exécutera npm install
le récupérera et le mettra dans le /node_modules
répertoire.
Cette réponse SO dit que bower est pour le front-end et que npm est pour le backend.
Ember-app-kit semble adhérer à cette distinction dès le premier coup d'œil ... Mais les instructions dans gruntfile pour activer certaines fonctionnalités donnent deux commandes explicites, donc je suis totalement confus ici.
Intuitivement, je suppose que
npm install --save-dev nom-package équivaudrait à ajouter le nom-package à mon package.json
bower install --save package-name peut être la même chose que d'ajouter le package à mon bower.json et d'exécuter bower install ?
Si tel est le cas, quand devrais-je jamais installer des packages explicitement comme ça sans les ajouter au fichier qui gère les dépendances (à part installer les outils de ligne de commande globalement)?
la source
Réponses:
Mise à jour mi-2016 :
Les choses changent si vite que si c'est fin 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 workflows, mais ce qui est le plus à jour en 2016, ce n'est pas du tout d'utiliser Bower, Grunt ou Gulp! Avec l'aide de Webpack, vous pouvez tout faire directement dans NPM!
Résultat Google "npm as build tool": https://medium.com/@dabit3/introduction-to-using-npm-as-a-build-tool-b41076f488b0#.c33e74tsa
Webpack: https://webpack.github.io/docs/installation.html
Ne vous méprenez pas, les gens utilisent d'autres flux de travail et j'utilise toujours GULP dans mon projet hérité (mais en sortant lentement), mais c'est ainsi que cela se fait dans les meilleures entreprises et les développeurs travaillant dans ce flux de travail 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
Vos questions:
Tout appartient maintenant à package.json
Les dépendances requises pour la construction sont dans "devDependencies" ie
npm install require-dir --save-dev
(--save-dev met à jour votre package.json en ajoutant une entrée à devDependencies)npm install lodash --save
(--save met à jour votre package.json en ajoutant une entrée aux dépendances)Toujours . Juste à cause du confort. Lorsque vous ajoutez un indicateur (
--save-dev
ou--save
), le fichier qui gère deps (package.json) est mis à jour automatiquement. Ne perdez pas de temps en y éditant manuellement les dépendances. Raccourci pournpm install --save-dev package-name
isnpm i -D package-name
et raccourci pournpm install --save package-name
isnpm i -S package-name
la source
With help of Webpack you can do everything directly in NPM!
Ce n'est pas vrai, on n'a même pas besoin de webpack dans son workflowNpm 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 l' installation des modules de nœud , mais Bower js est utilisé pour gérer les éléments d'avant comme html, css, js etc .
Un fait qui rend cela plus confus est que npm fournit des packages qui peuvent également être utilisés dans le développement frontal, comme
grunt
etjshint
.Ces lignes ajoutent plus de sens
Edit : Grunt est assez différent de Npm et Bower. Grunt est un outil d'exécution de tâches javascript. Vous pouvez faire beaucoup de choses en utilisant grunt que vous deviez faire manuellement sinon. Soulignant certaines des utilisations de Grunt:
Il existe des plugins grunt pour la compilation sass, uglifiant votre javascript, copiant des fichiers / dossiers, minifiant javascript, etc.
Veuillez noter que le plugin grunt est également un package npm.
Question 1
Cela dépend vraiment de l'appartenance de ce paquet. S'il s'agit d'un module de noeud (comme grunt, request), il ira dans package.json sinon dans bower json.
Question 2
Peu importe que vous installiez explicitement des packages ou mentionniez la dépendance dans le fichier .json. Supposons que vous êtes en train de travailler sur un projet de noeud et que vous ayez besoin d'un autre projet, disons
request
, alors vous avez deux options:OU
npm install --save request
--save
options ajoute également la dépendance au fichier package.json. Si vous ne spécifiez pas d'--save
option, il téléchargera uniquement le package 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.
la source
npm
uniquement, contrairement au didacticiel v1 qui utilisait à la fois npm et bower. J'aime vraiment, vraiment le fait que (a)package.json
est la seule chose à maintenir, (b) qu'il calcule les dépendances de manière récursive dans une seule lignenpm install
, et (c) quand il y a un problème, il suffit de supprimer lenode_modules
dossier et d'exécuter npm install encore.