Je commence à utiliser Composer, j'en sais 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"
}
Généralement, les logiciels fonctionneront 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 requises pour l'exécution d'une application ou d'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 requises dans
developing
testing
environnements.
Par exemple, en plus des packages utilisés pour exécuter réellement 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 code)squizlabs/php_codesniffer
(pour détecter et résoudre les problèmes de style de code)phpunit/phpunit
(pour piloter le développement à l'aide de tests)Maintenant, dans les environnements development
et testing
, vous exécuterez généralement
$ composer install
installer les dépendances production
et development
.
Toutefois, dans les environnements staging
et production
, vous souhaitez uniquement installer les dépendances requises pour l'exécution de l'application. Dans le cadre du processus de déploiement, vous exécuterez généralement
$ composer install --no-dev
installer uniquement les dépendances production
.
En d'autres termes, les sections
require
require-dev
indiquez à composer
les paquetages à installer lors de l'exécution
$ composer install
ou
$ composer install --no-dev
C'est tout.
Note 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:
Selon le manuel du compositeur :
require-dev (racine uniquement)
Répertorie les packages requis pour développer ce package, exécuter des tests, etc. Les exigences de développement du package racine sont installées par défaut.
install
ouupdate
prennent en charge l'option--no-dev
qui empêche l'installation des dépendances de développeurs.
Donc, exécuter composer install
va également télécharger les dépendances de développement.
La raison est en fait assez simple. Lorsque vous contribuez à une bibliothèque spécifique, vous pouvez exécuter des suites de tests ou d’autres outils de développement (par exemple, symfony). Toutefois, si vous installez cette bibliothèque dans un projet, ces dépendances de développement risquent de ne pas être nécessaires: tous les projets ne nécessitent pas un exécuteur de test.
Sur le site du compositeur (c'est assez clair)
exiger#
Répertorie les paquets requis par ce paquet. Le paquet ne sera pas installé à moins que ces exigences ne puissent être satisfaites.
require-dev (racine uniquement) #
Répertorie les paquetages nécessaires au développement de ce paquet ou à l'exécution de tests. etc. Les exigences de développement du paquet racine sont installées par défaut. L'installation ou la mise à jour prend en charge l'option --no-dev que empêche les dépendances dev d'être installés.
En utilisant require-dev dans Composer, vous pouvez déclarer les dépendances dont vous avez besoin pour développer/tester le 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 partie require-dev
est ignorée.
Vérifiez également cette réponse postée par l’auteur l’auteur et cet article aussi.
require section Cette section contient les paquetages/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 que le développeur peut utiliser 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 voulez les paquets 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 une application, à exécuter des tests, etc.
Dans les environnements staging et production, vous ne voulez probablement que les packages de la section require.
Mais de toute façon, vous pouvez exécuter composer installer --no-dev et composer update --no-dev sur n’importe quel environnement, la commande n’installera que les paquets de la section required et non de require- dev, mais vous souhaiterez probablement l'exécuter uniquement dans les environnements staging et production non locaux.
Théoriquement, vous pouvez mettre tous les packages dans la section require et rien ne se passera, mais vous ne souhaitez pas développer de packages dans l'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 pour la production.
Voir plus ici: https://getcomposer.org/doc/04-schema.md