Je suis nouveau à utiliser npm et bower, construire ma première application dans emberjs :).
J'ai un peu d'expérience avec les rails, donc je connais l'idée de fichiers pour la liste des dépendances (comme le Gemilot de bundler)
Question: quand je veux ajouter un paquet (et vérifier la dépendance dans git), où appartient-il dans package.json
ou dans bower.json
?
D'après ce que je crois,
L' bower install
courant va chercher le paquet et le placer dans /vendor
répertoire /vendor
,
En cours d'exécution, npm install
il l' /node_modules
répertoire /node_modules
.
Cette réponse SO indique que bower est pour front-end et npm est pour les choses de backend.
Ember-app-kit semble adhérer à cette distinction à partir du premier coup d'œil … Mais les instructions dans gruntfile pour permettre certaines fonctionnalités donnent deux commandes explicites, donc je suis totalement confus ici.
Intuitivement, je devine que
Npm install –save-dev package-name équivaut à ajouter le nom du paquet à mon package.json
Bower install –saver package-name peut-être être le même que l'ajout du package à mon bower.json et l' installation de bower en cours d'exécution?
Si tel est le cas, quand devrais-je installer des modules explicitement comme ça sans les ajouter au fichier qui gère les dépendances (en plus d'installer les outils de ligne de commande à l'échelle mondiale)?
Mise à jour pour la mi-2016 :
Les choses évoluent tellement 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 flux de travail, mais ce qui est le plus à jour en 2016, ne consiste pas à utiliser Bower, Grunt ou Gulp! Avec l'aide de Webpack, vous pouvez tout faire directement dans NPM!
Google "npm en tant qu'outil de construction" résultat: https://medium.com/@dabit3/introduction-to-using-npm-as-a-build-tool-b41076f488b0#.c33e74tsa
Ne me méprenez pas que les gens utilisent d'autres flux de travail et j'utilise toujours GULP dans mon projet hérité (mais en sort lentement), mais c'est ainsi que cela se fait dans les meilleures entreprises et les développeurs qui travaillent dans ce workflow font beaucoup d'argent!
Regardez ce modèle, c'est une configuration très récente constituée d'un mélange des meilleures et des dernières technologies: https://github.com/coryhouse/react-slingshot
Vos questions:
Quand je veux ajouter un paquet (et vérifier la dépendance dans git), où appartient-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)
npm install lodash --save
(- sauvegarder les mises à jour de votre package.json en ajoutant une entrée aux dépendances) Si tel est le cas, quand devrais-je installer des modules explicitement comme ça sans les ajouter au fichier qui gère les dépendances (en plus d'installer les outils de ligne de commande à l'échelle mondiale)?
Toujours . Juste à cause du confort. Lorsque vous ajoutez un drapeau ( --save-dev
ou --save
), le fichier qui gère deps (package.json) est automatiquement mis à jour. Ne gaspillez pas de temps en modifiant les dépendances manuellement. Raccourci pour l' npm install --save-dev package-name
est npm i -D package-name
et raccourci pour l' npm install --save package-name
est npm i -S package-name
Npm et Bower sont tous deux des outils de gestion de dépendance. Mais la principale différence entre les deux est npm est utilisé pour l'installation de modules Node js, mais bower js est utilisé pour la gestion de composants avant comme html, css, js etc.
Un fait qui rend cela plus confus, c'est que npm fournit certains paquets qui peuvent également être utilisés dans le développement de front-end, comme grunt
et jshint
.
Ces lignes ajoutent plus de sens
Bower, contrairement à npm, peut avoir plusieurs fichiers (p. Ex. 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 emballés ensemble, un composant.
Edit : Grunt est très différent de Npm et Bower. Grunt est un outil de coureur de tâches javascript. Vous pouvez faire beaucoup de choses en utilisant grunt que vous avez à faire manuellement autrement. Soulignant certaines des utilisations de Grunt:
Il existe des plugins grunt pour la compilation sass, uglisant votre javascript, copiez des fichiers / dossiers, javascript mineur, etc.
Veuillez noter que le plugin grunt est également un paquet de npm.
Question 1
Quand je veux ajouter un paquet (et vérifier la dépendance dans git), où appartient-il dans package.json ou dans bower.json
Cela dépend vraiment d'où appartient ce paquet. S'il s'agit d'un module de noeud (comme grunt, demande), il ira dans package.json sinon dans bower json.
Question 2
Quand dois-je installer des packages explicitement comme ça sans les ajouter au fichier qui gère les dépendances
Peu importe si vous installez des packages explicitement ou mentionnez la dépendance dans le fichier .json. Supposons que vous êtes en train de travailler sur un projet de noeud et que vous avez besoin d'un autre projet, request
, vous avez deux options:
OU
npm install --save request
--save
options de --save
ajoutent également la dépendance au fichier package.json. Si vous ne spécifiez pas l'option --save
, elle ne téléchargera que le fichier, 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.