Je commence à utiliser composer, j'en connais si peu et j'ai une petite expérience du développement d'applications Web.
Je viens de parcourir Nettuts + Tutorial , donc j'ai une question de base sur le compositeur.
{
"require": {
"laravel/framework": "4.0.*",
"way/generators": "dev-master",
"twitter/bootstrap": "dev-master",
"conarwelsh/mustache-l4": "dev-master"
},
"require-dev": {
"phpunit/phpunit": "3.7.*",
"mockery/mockery": "0.7.*"
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"scripts": {
"post-update-cmd": "php artisan optimize"
},
"minimum-stability": "dev"
}
- Tout ce qui apparaît en
"require-dev"
partie ne sera téléchargé et installé qu'aveccomposer install --dev
? - J'ai lu une partie de la documentation du compositeur mais je ne comprends toujours pas quelle est la raison pour laquelle nous avons une
"require-dev"
partie? Est-ce parce que nous voulons obtenir une version spécifique du paquet plutôt que toujours la dernière version stable?
composer-php
Artisan
la source
la source
Réponses:
Différents environnements
En règle générale, les logiciels s'exécutent dans différents environnements:
development
testing
staging
production
Différentes dépendances dans différents environnements
Les dépendances qui sont déclarées dans la
require
section decomposer.json
sont généralement des dépendances qui sont requises pour exécuter une application ou un package dansstaging
production
environnements, alors que les dépendances déclarées dans la
require-dev
section sont généralement des dépendances qui sont requises dansdeveloping
testing
environnements.
Par exemple, en plus des packages utilisés pour exécuter une application, des packages peuvent être nécessaires pour développer le logiciel, tels que:
friendsofphp/php-cs-fixer
(pour détecter et résoudre les problèmes de style de codage)squizlabs/php_codesniffer
(pour détecter et résoudre les problèmes de style de codage)phpunit/phpunit
(pour piloter le développement à l'aide de tests)Déploiement
Maintenant, dans les environnements
development
ettesting
, vous exécutez généralementpour installer les deux
production
et lesdevelopment
dépendances.Cependant, dans les environnements
staging
etproduction
, vous ne souhaitez installer que les dépendances nécessaires à l'exécution de l'application, et dans le cadre du processus de déploiement, vous exécutez généralementpour installer uniquement les
production
dépendances.Sémantique
En d'autres termes, les sections
require
require-dev
indiquer dans
composer
quels packages doivent être installés lors de l'exécutionou
C'est tout.
Remarque Les dépendances de développement des packages dont dépend votre application ou package ne seront jamais installées
Pour référence, voir:
la source
vendor
dossier entier via FTP?—no-dev
. De plus, FTP sera probablement assez lent.composer.json
- voir par exemple github.com/FriendsOfPHP/PHP-CS-Fixer/tree/2.16/dev-tools .Selon le manuel du compositeur :
L'exécution
composer install
téléchargera donc également les dépendances de développement.La raison est en fait assez simple. Lorsque vous contribuez à une bibliothèque spécifique, vous voudrez peut-être exécuter des suites de tests ou d'autres outils de développement (par exemple symfony). Mais si vous installez cette bibliothèque dans un projet, ces dépendances de développement peuvent ne pas être requises: tous les projets ne nécessitent pas un exécuteur de test.
la source
Depuis le site du compositeur (c'est assez clair)
En utilisant require-dev dans Composer, vous pouvez déclarer les dépendances dont vous avez besoin pour le développement / test du projet mais dont vous n'avez pas besoin en production. Lorsque vous téléchargez le projet sur votre serveur de production (à l'aide de git), la
require-dev
partie est ignorée.Vérifiez également cette réponse publiée par l' auteur et cet article .
la source
section require Cette section contient les packages / dépendances qui sont les meilleurs candidats pour être installés / requis dans l'environnement de production.
Section require-dev: Cette section contient les packages / dépendances qui peuvent être utilisés par le développeur pour tester son code (ou pour expérimenter sur sa machine locale et elle ne souhaite pas que ces packages soient installés sur l'environnement de production).
la source
La règle générale est que vous voulez des packages de la section require-dev uniquement dans les environnements de développement (dev), par exemple l'environnement local.
Les packages de la section require-dev sont des packages qui vous aident à déboguer l'application, à exécuter des tests, etc.
Dans l' environnement de préparation et de production , vous ne voulez probablement que des packages de la section require .
Mais de toute façon, vous pouvez exécuter composer install --no-dev et composer update --no-dev sur n'importe quel environnement, la commande installera uniquement les packages de la section requise et non de require-dev , mais vous souhaitez probablement l'exécuter uniquement lors de la préparation et de la production environnements pas sur local.
Théoriquement, vous pouvez placer tous les packages dans la section require et rien ne se passera, mais vous ne voulez pas développer de packages dans un environnement de production pour les raisons suivantes:
Quelques bons candidats pour require-dev sont:
vous pouvez voir ce que font les packages ci-dessus et vous verrez pourquoi vous n'en avez pas besoin en production.
Voir plus ici: https://getcomposer.org/doc/04-schema.md
la source