Skip to content

Commit

Permalink
composer: improved content
Browse files Browse the repository at this point in the history
  • Loading branch information
dg committed Mar 28, 2023
1 parent 3bd4c74 commit dfb66f1
Show file tree
Hide file tree
Showing 16 changed files with 624 additions and 112 deletions.
46 changes: 39 additions & 7 deletions best-practices/bg/composer.texy
Expand Up @@ -67,8 +67,8 @@ $db = new Nette\Database\Connection('sqlite::memory:');
```


Актуализиране до най-новата версия .[#toc-update-to-the-latest-version]
=======================================================================
Актуализиране на пакетите до най-новите версии .[#toc-update-packages-to-the-latest-versions]
=============================================================================================

За да обновите всички използвани пакети до най-новата версия в съответствие с ограниченията на версиите, определени в `composer.json`, използвайте командата `composer update`. Например зависимостта `"nette/database": "^3.0"` ще инсталира най-новата версия 3.x.x, но не и версия 4.

Expand Down Expand Up @@ -98,25 +98,57 @@ composer create-project nette/web-project name-of-the-project

Вместо `name-of-the-project` посочете името на директорията на проекта и изпълнете командата. Composer ще изтегли хранилището `nette/web-project` от GitHub, което вече съдържа файла `composer.json`, и веднага след това ще инсталира самата рамка Nette. Остава само да [проверите разрешенията за запис на |nette:troubleshooting#Setting-Directory-Permissions] директориите `temp/` и `log/`, и сте готови да започнете работа.

Ако знаете на каква версия на PHP ще бъде хостван проектът, не забравяйте да [я настро |#PHP Version]ите.


Версия на PHP .[#toc-php-version]
=================================

Composer винаги инсталира версии на пакети, които са съвместими с версията на PHP, която използвате в момента. Разбира се, това може да не е същата версия на PHP, която е инсталирана на вашия хост. Затова е добре да добавите информация за версията на PHP на хоста към `composer.json`, така че да бъдат инсталирани само съвместимите версии на пакетите:
Composer винаги инсталира версиите на пакетите, които са съвместими с версията на PHP, която използвате в момента (или по-скоро с версията на PHP, използвана в командния ред при стартиране на Composer). Вероятно това не е същата версия, която използва вашият уеб хост. Ето защо е много важно да добавите информация за версията на PHP на вашия хостинг във файла `composer.json`. След това ще бъдат инсталирани само версии на пакети, съвместими с хоста.

Например, за да настроите проекта да работи с PHP 8.2.3, използвайте командата:

```shell
composer config platform.php 8.2.3
```

По този начин версията се записва във файла `composer.json`:

```js
{
"require": {
...
},
"config": {
"platform": {
"php": "7.2" # PHP версия сервера
"php": "8.2.3"
}
}
}
```

Номерът на версията на PHP обаче е посочен и на друго място във файла, в раздела `require`. Докато първият номер определя версията, за която ще бъдат инсталирани пакетите, вторият номер казва за каква версия е написано самото приложение.
(Разбира се, няма смисъл тези версии да се различават, така че двойното вписване е излишно.) Тази версия се задава с командата:

```shell
composer require php 8.2.3 --no-update
```

Или директно във файла `composer.json`:

```js
{
"require": {
"php": "8.2.3"
}
}
```


Фалшиви доклади .[#toc-false-reports]
=====================================

При надграждане на пакети или промяна на номера на версиите се случват конфликти. Един пакет има изисквания, които са в конфликт с друг и т.н. Понякога обаче Composer отпечатва фалшиви съобщения. Той съобщава за конфликт, който в действителност не съществува. В този случай помага да изтриете файла `composer.lock` и да опитате отново.

Ако съобщението за грешка продължава, то е мислено сериозно и трябва да прочетете от него какво и как да промените.


Packagist.org - глобално хранилище .[#toc-packagist-org-global-repository]
==========================================================================
Expand Down
46 changes: 39 additions & 7 deletions best-practices/cs/composer.texy
Expand Up @@ -67,8 +67,8 @@ $db = new Nette\Database\Connection('sqlite::memory:');
```


Aktualizace na nejnovější verze
===============================
Aktualizace balíčků na nejnovější verze
=======================================

Aktualizaci použiváných knihoven na nejnovější verze podle podmínek definovaných v `composer.json` má na starosti příkaz `composer update`. Např. u závislosti `"nette/database": "^3.0"` nainstaluje nejnovější verzi 3.x.x, ale nikoliv už verzi 4.

Expand Down Expand Up @@ -98,25 +98,57 @@ composer create-project nette/web-project nazev-projektu

Jako `nazev-projektu` vložte název adresáře pro svůj projekt a potvrďte. Composer stáhne repozitář `nette/web-project` z GitHubu, který už obsahuje soubor `composer.json`, a hned potom Nette Framework. Mělo by již stačit pouze [nastavit oprávnění |nette:troubleshooting#nastaveni-prav-adresaru] na zápis do složek `temp/` a `log/` a projekt by měl ožít.

Pokud víte, na jaké verzi bude PHP projekt hostován, nezapomeňte [ji nastavit |#Verze PHP].


Verze PHP
=========

Composer vždy instaluje ty verze balíčků, které jsou kompatibilní s verzí PHP, kterou právě používáte. Což ovšem nemusí být stejná verze, jako používá váš hosting. Proto je užitečné si do souboru `composer.json` přidat informaci o verzi PHP na hostingu a poté se budou instalovat pouze verze balíčků s hostingem kompatibilní:
Composer vždy instaluje ty verze balíčků, které jsou kompatibilní s verzí PHP, kterou právě používáte (lépe řečeno s verzí PHP používanou v příkazové řádce při spouštění Composeru). Což ale nejspíš není stejná verze, jakou používá váš hosting. Proto je velmi důležité si do souboru `composer.json` přidat informaci o verzi PHP na hostingu. Poté se budou instalovat pouze verze balíčků s hostingem kompatibilní.

To, že projekt poběží například na PHP 8.2.3, nastavíme příkazem:

```shell
composer config platform.php 8.2.3
```

Takto se verze zapíše do souboru `composer.json`:

```js
{
"require": {
...
},
"config": {
"platform": {
"php": "7.2" # verze PHP na hostingu
"php": "8.2.3"
}
}
}
```

Nicméně číslo verze PHP se uvádí ještě na jiném místě souboru, a to v sekci `require`. Zatímco první číslo určuje, pro jakou verzi se budou instalovat balíčky, druhé číslo říká, pro jakou verzi je napsaná samotná aplikace.
A podle něj například PhpStorm nastavuje *PHP language level*. (Samozřejmě nedává smysl, aby se tyto verze lišily, takže dvojí zápis je nedomyšlenost.) Tuto verzi nastavíte příkazem:

```shell
composer require php 8.2.3 --no-update
```

Nebo přímo v souboru `composer.json`:

```js
{
"require": {
"php": "8.2.3"
}
}
```


Planá hlášení
=============

Při upgradu balíčků nebo změnách čísel verzí se stává, že dojde ke konfliktu. Jeden balíček má požadavky, které jsou v rozporu s jiným a podobně. Composer ale občas vypisuje plané hlášení. Hlásí konflikt, který reálně neexistuje. V takovém případě pomůže smazat soubor `composer.lock` a zkusit to znovu.

Pokud chybová hláška přetrvává, pak je myšlena vážně a je potřeba z ní vyčíst, co a jak upravit.


Packagist.org - centrální repozitář
===================================
Expand Down
46 changes: 39 additions & 7 deletions best-practices/de/composer.texy
Expand Up @@ -67,8 +67,8 @@ $db = new Nette\Database\Connection('sqlite::memory:');
```


Update auf die neueste Version .[#toc-update-to-the-latest-version]
===================================================================
Pakete auf die neuesten Versionen aktualisieren .[#toc-update-packages-to-the-latest-versions]
==============================================================================================

Um alle verwendeten Pakete auf die neueste Version gemäß den in `composer.json` definierten Versionsbeschränkungen zu aktualisieren, verwenden Sie den Befehl `composer update`. Zum Beispiel wird für die Abhängigkeit `"nette/database": "^3.0"` die neueste Version 3.x.x installiert, aber nicht Version 4.

Expand Down Expand Up @@ -98,25 +98,57 @@ composer create-project nette/web-project name-of-the-project

Anstelle von `name-of-the-project` sollten Sie den Namen des Verzeichnisses für Ihr Projekt angeben und den Befehl ausführen. Composer wird das Repository `nette/web-project` von GitHub holen, das bereits die Datei `composer.json` enthält, und gleich danach das Nette Framework selbst installieren. Nun müssen nur noch die [Schreibrechte |nette:troubleshooting#setting-directory-permissions] für die Verzeichnisse `temp/` und `log/` [überprüft |nette:troubleshooting#setting-directory-permissions] werden und schon kann es losgehen.

Wenn Sie wissen, mit welcher PHP-Version das Projekt gehostet werden soll, sollten Sie [diese |#PHP Version] unbedingt einrichten.


PHP-Version .[#toc-php-version]
===============================

Composer installiert immer die Versionen der Pakete, die mit der PHP-Version kompatibel sind, die Sie gerade verwenden. Das kann natürlich nicht die gleiche Version sein wie die von PHP auf Ihrem Webhost. Daher ist es sinnvoll, der Datei `composer.json` Informationen über die PHP-Version auf dem Host hinzuzufügen, damit nur die mit dem Host kompatiblen Versionen der Pakete installiert werden:
Composer installiert immer die Versionen der Pakete, die mit der PHP-Version kompatibel sind, die Sie gerade verwenden (oder besser gesagt, die PHP-Version, die auf der Kommandozeile verwendet wird, wenn Sie Composer starten). Das ist wahrscheinlich nicht die Version, die Ihr Webhost verwendet. Deshalb ist es sehr wichtig, dass Sie Informationen über die PHP-Version Ihres Hosts in Ihre Datei `composer.json` aufnehmen. Danach werden nur noch die Versionen der Pakete installiert, die mit dem Host kompatibel sind.

Um zum Beispiel das Projekt auf PHP 8.2.3 einzustellen, verwenden Sie den Befehl:

```shell
composer config platform.php 8.2.3
```

So wird die Version in die Datei `composer.json` geschrieben:

```js
{
"require": {
...
},
"config": {
"platform": {
"php": "7.2" # PHP version on host
"php": "8.2.3"
}
}
}
```

Die PHP-Versionsnummer wird jedoch auch an anderer Stelle in der Datei aufgeführt, im Abschnitt `require`. Während die erste Zahl die Version angibt, für die Pakete installiert werden, sagt die zweite Zahl, für welche Version die Anwendung selbst geschrieben wurde.
(Natürlich macht es keinen Sinn, dass diese Versionen unterschiedlich sind, daher ist die doppelte Angabe eine Redundanz). Sie setzen diese Version mit dem Befehl:

```shell
composer require php 8.2.3 --no-update
```

Oder direkt in der Datei "Composer.json":

```js
{
"require": {
"php": "8.2.3"
}
}
```


False Berichte .[#toc-false-reports]
====================================

Bei der Aktualisierung von Paketen oder der Änderung von Versionsnummern kommt es zu Konflikten. Ein Paket hat Anforderungen, die mit einem anderen in Konflikt stehen, und so weiter. Composer gibt jedoch gelegentlich eine falsche Meldung aus. Er meldet einen Konflikt, der nicht wirklich existiert. In diesem Fall hilft es, die Datei `composer.lock` zu löschen und es erneut zu versuchen.

Bleibt die Fehlermeldung bestehen, dann ist sie ernst gemeint und Sie müssen ihr entnehmen, was Sie wie ändern müssen.


Packagist.org - Globales Repository .[#toc-packagist-org-global-repository]
===========================================================================
Expand Down
46 changes: 39 additions & 7 deletions best-practices/el/composer.texy
Expand Up @@ -67,8 +67,8 @@ $db = new Nette\Database\Connection('sqlite::memory:');
```


Ενημέρωση στην τελευταία έκδοση .[#toc-update-to-the-latest-version]
====================================================================
Ενημέρωση πακέτων στις τελευταίες εκδόσεις .[#toc-update-packages-to-the-latest-versions]
=========================================================================================

Για να ενημερώσετε όλα τα χρησιμοποιούμενα πακέτα στην τελευταία έκδοση σύμφωνα με τους περιορισμούς έκδοσης που ορίζονται στο `composer.json` χρησιμοποιήστε την εντολή `composer update`. Για παράδειγμα, για την εξάρτηση `"nette/database": "^3.0"` θα εγκαταστήσει την τελευταία έκδοση 3.x.x, αλλά όχι την έκδοση 4.

Expand Down Expand Up @@ -98,25 +98,57 @@ composer create-project nette/web-project name-of-the-project

Αντί για το `name-of-the-project` θα πρέπει να δώσετε το όνομα του καταλόγου για το έργο σας και να εκτελέσετε την εντολή. Το Composer θα φέρει το αποθετήριο `nette/web-project` από το GitHub, το οποίο περιέχει ήδη το αρχείο `composer.json`, και αμέσως μετά θα εγκαταστήσει το ίδιο το Nette Framework. Το μόνο που απομένει είναι να [ελέγξετε τα δικαιώματα εγγραφής |nette:troubleshooting#setting-directory-permissions] στους καταλόγους `temp/` και `log/` και είστε έτοιμοι να ξεκινήσετε.

Αν γνωρίζετε σε ποια έκδοση PHP θα φιλοξενηθεί το έργο, φροντίστε να [το ρυθμίσετε |#PHP Version].


Έκδοση PHP .[#toc-php-version]
==============================

Το Composer εγκαθιστά πάντα τις εκδόσεις των πακέτων που είναι συμβατές με την έκδοση της PHP που χρησιμοποιείτε αυτή τη στιγμή. Η οποία, βέβαια, μπορεί να μην είναι η ίδια έκδοση με την PHP του web host σας. Ως εκ τούτου, είναι χρήσιμο να προσθέσετε πληροφορίες σχετικά με την έκδοση της PHP στον κεντρικό υπολογιστή στο αρχείο `composer.json`, και τότε θα εγκατασταθούν μόνο οι εκδόσεις των πακέτων που είναι συμβατές με τον κεντρικό υπολογιστή:
Το Composer εγκαθιστά πάντα τις εκδόσεις των πακέτων που είναι συμβατές με την έκδοση της PHP που χρησιμοποιείτε αυτή τη στιγμή (ή μάλλον, την έκδοση της PHP που χρησιμοποιείται στη γραμμή εντολών όταν εκτελείτε το Composer). Η οποία πιθανότατα δεν είναι η ίδια έκδοση που χρησιμοποιεί ο web host σας. Γι' αυτό είναι πολύ σημαντικό να προσθέσετε πληροφορίες σχετικά με την έκδοση της PHP στη φιλοξενία σας στο αρχείο `composer.json`. Μετά από αυτό, θα εγκατασταθούν μόνο οι εκδόσεις των πακέτων που είναι συμβατές με τον host.

Για παράδειγμα, για να ρυθμίσετε το έργο να τρέχει σε PHP 8.2.3, χρησιμοποιήστε την εντολή:

```shell
composer config platform.php 8.2.3
```

Έτσι γράφεται η έκδοση στο αρχείο `composer.json`:

```js
{
"require": {
...
},
"config": {
"platform": {
"php": "7.2" # PHP version on host
"php": "8.2.3"
}
}
}
```

Ωστόσο, ο αριθμός έκδοσης της PHP αναφέρεται και σε άλλο σημείο του αρχείου, στην ενότητα `require`. Ενώ ο πρώτος αριθμός καθορίζει την έκδοση για την οποία θα εγκατασταθούν τα πακέτα, ο δεύτερος αριθμός λέει για ποια έκδοση είναι γραμμένη η ίδια η εφαρμογή.
(Φυσικά, δεν έχει νόημα αυτές οι εκδόσεις να είναι διαφορετικές, οπότε η διπλή καταχώρηση είναι πλεονασμός). Ορίζετε αυτή την έκδοση με την εντολή:

```shell
composer require php 8.2.3 --no-update
```

Ή απευθείας στο αρχείο `composer.json`:

```js
{
"require": {
"php": "8.2.3"
}
}
```


Ψευδείς αναφορές .[#toc-false-reports]
======================================

Όταν αναβαθμίζετε πακέτα ή αλλάζετε αριθμούς εκδόσεων, συμβαίνουν συγκρούσεις. Ένα πακέτο έχει απαιτήσεις που συγκρούονται με ένα άλλο και ούτω καθεξής. Ωστόσο, το Composer εκτυπώνει περιστασιακά ψευδή μηνύματα. Αναφέρει μια σύγκρουση που στην πραγματικότητα δεν υπάρχει. Σε αυτή την περίπτωση, βοηθάει να διαγράψετε το αρχείο `composer.lock` και να δοκιμάσετε ξανά.

Αν το μήνυμα σφάλματος επιμένει, τότε εννοείται σοβαρά και πρέπει να διαβάσετε από αυτό τι πρέπει να τροποποιήσετε και πώς.


Packagist.org - Παγκόσμιο αποθετήριο .[#toc-packagist-org-global-repository]
============================================================================
Expand Down

0 comments on commit dfb66f1

Please sign in to comment.