Je commence à utiliser le compositeur, je le connais si peu et j’ai un peu d’expérience en développement d’applications Web.
Je passe simplement en revue le didacticiel Nettuts + . J’ai donc 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" }
Généralement, les logiciels seront exécutés dans différents environnements:
development
testing
staging
production
Les dépendances déclarées dans la section require
de composer.json
sont généralement des dépendances requirejses pour exécuter une application ou un package dans
staging
production
environnements, alors que les dépendances déclarées dans la section require-dev
sont généralement des dépendances requirejses dans
developing
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 corriger les problèmes de style de codage) squizlabs/php_codesniffer
(pour détecter et corriger les problèmes de style de codage) phpunit/phpunit
(pour piloter le développement à l’aide de tests) Maintenant, dans testing
environnements de development
et de testing
, vous exécutez généralement
$ composer install
installer les dépendances de production
et de development
.
Toutefois, dans production
environnements de staging
et de production
, vous souhaitez uniquement installer les dépendances requirejses pour exécuter l’application et, dans le cadre du processus de déploiement, vous devez généralement exécuter
$ composer install --no-dev
installer uniquement production
dépendances de production
.
En d’autres termes, les sections
require
require-dev
indiquer au composer
quels paquets doivent être installés lors de l’exécution
$ composer install
ou
$ composer install --no-dev
C’est tout.
Remarque Les dépendances de développement des packages dont dépend votre application ou votre package ne seront jamais installées
Pour référence, voir:
Selon le manuel du compositeur :
require-dev (root uniquement)
Répertorie les packages requirejs pour développer ce package, ou exécuter des tests, etc. Les exigences de développement du package racine sont installées par défaut. L’
install
ou laupdate
prennent en charge l’option--no-dev
qui empêche l’installation des dépendances de développement.
Ainsi, l’exécution de composer install
téléchargera également les dépendances de développement.
La raison est en fait assez simple. Lorsque vous consortingbuez à une bibliothèque spécifique, vous pouvez exécuter des suites de tests ou d’autres outils de développement (par exemple, symfony). Mais si vous installez cette bibliothèque sur un projet, ces dépendances de développement peuvent ne pas être requirejses: tous les projets ne nécessitent pas un exécuteur de test.
Du site du compositeur (c’est assez clair)
exiger#
Répertorie les paquets requirejs par ce paquet. Le paquet ne sera pas installé à moins que ces exigences puissent être satisfaites.
require-dev (root uniquement) #
Répertorie les packages requirejs pour développer ce package, ou exécuter des tests, etc. Les exigences de développement du package racine sont installées par défaut. L’installation ou la mise à jour prennent en charge l’option –no-dev qui empêche l’installation des dépendances de développement.
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 pas en production. Lorsque vous téléchargez le projet sur votre serveur de production (en utilisant git), la partie require-dev
sera ignorée.
Vérifiez également cette réponse postée par l’ auteur et ce post aussi.
section require Cette section contient les packages / dépendances qui sont les meilleurs candidats à installer / requirejs dans l’environnement de production.
Section require-dev: Cette section contient les paquets / dépendances qui peuvent être utilisés par le développeur pour tester son code (or for the experiment purpose on her local machine and she wants these packages should not be installed on the production environment.)
La règle générale est que vous ne voulez que les packages de la section require-dev 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 une application, à exécuter des tests, etc.
Dans l’environnement de mise en scène et de production , vous ne voulez probablement que des packages de la section require .
Mais de toute façon vous pouvez exécuter le composeur install –no-dev et le composeur de mise à jour –no-dev sur n’importe quel environnement, la commande installera seulement les paquets de la section requirejse pas de require-dev , mais vous voudrez probablement l’exécuter seulement environnements non locaux.
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:
"filp/whoops": "^2.0", "fzaninotto/faker": "^1.4", "mockery/mockery": "^1.0", "nunomaduro/collision": "^2.0", "phpunit/phpunit": "^7.0"
vous pouvez voir ce que font les paquets ci-dessus et vous verrez pourquoi vous n’en avez pas besoin en production.
Voir plus ici: https://getcomposer.org/doc/04-schema.md