Estructura del proyecto del Compositor
Esta guía describe cómo configurar y mantener el opción separar paquetes descrito en los ejemplos de la arquitectura de referencia global (GRA).
Requisitos previos
Antes de empezar, compruebe lo siguiente:
- Tiene un repositorio de Git
- Tiene un repositorio de Compositor (en este tema se resalta Private Packagist)
- Ha configurado su repositorio de Composer para que refleje el
repo.magento.com
ypackagist.org
repositorios
Repositorio de proyectos de Git principal
El repositorio del proyecto Git principal solo debe contener un proyecto Composer. Puede administrar todo lo demás con los paquetes de Composer. El proyecto principal no debe contener nada que no sea la siguiente estructura de archivos porque Composer instala todos los demás paquetes mediante dependencias:
./
├─ .git/
├─ .gitignore
├─ composer.json
└─ composer.lock
Añada el siguiente contenido a .gitignore
archivo:
/*
!/composer.json
!/composer.lock
Inicializar el proyecto principal
-
Cree un repositorio Git llamado
project-<region/country/brand>
. -
Crear
composer.json
ycomposer.lock
archivos:code language-bash composer create-project --no-install --repository-url=https://repo.magento.com/ magento/project-enterprise-edition project-<region/country/brand> cd <install-directory-name> printf '/*\n!/composer.json\n!/composer.lock\n!/.gitignore' > .gitignore composer config --unset version composer config name '<client>/project-<region/country/brand>' composer config description '<client> <region/country/brand> main composer project' composer config repositories.private-packagist composer https://repo.packagist.com/<client>/ composer config repositories.packagist.org false composer config --unset repositories.0 composer install git init git add --all git commit -m 'initialize project' git remote add origin git@bitbucket.org:<client>/project-<region/country/brand>.git git push -u origin master
Guardar archivos que no son de módulo
-
Añada el
app/etc/config.xml
al repositorio de Git.Puede utilizar el módulo que va a crear para instalar otros archivos de región o específicos de la marca, como
.htaccess
, archivos de texto de autenticación de Google o Bing, ejecutables u otros archivos estáticos que no son administrados por módulos de Adobe Commerce.Uso
magento2-component
escriba paquetes para crear una asignación de archivos para copiar archivos en el repositorio principal de Git durantecomposer install
ycomposer update
operaciones. -
Cree un repositorio Git que siga la convención de nomenclatura
component-environment-<region/country/brand>
:code language-bash bin/magento module:enable --all cd ../ mkdir component-environment-<region/country/brand> cd component-environment-<region/country/brand> composer init --no-interaction \ --name='<client>/component-environment-<region/country/brand>' \ --description='<client> <region/country/brand> environment files' \ --type=magento2-component \ --require="magento/magento-composer-installer:*" mkdir -p app/etc cp ../project-<region/country/brand>/app/etc/config.php app/etc/ composer config -e
-
Añada el
app/etc/config.php
archivo como asignación en laextra.map
atributo de sucomposer.json
archivo:code language-json { "name": "example-client/component-environment-emea", "description": "Example client EMEA environment files", "type": "magento2-component", "require": { "magento/magento-composer-installer": "*" }, "extra": { "map": [ [ "app/etc/config.php", "app/etc/config.php" ] ] } }
-
Valide su
composer.json
y configúrelo en el repositorio Git:code language-bash composer validate git init git add --all git commit -m 'initialize component' git remote add origin git@bitbucket.org:<client>/component-environment-<region/country/brand>.git git push -u origin master git tag 0.1.0 -m "0.1.0" git push --tags
Configuración de metapaquetes
-
Cree los siguientes repositorios Git:
meta-gra
meta-<region/country/brand>
-
Configure el siguiente árbol de dependencias:
code language-tree client/project-<region/country/brand> └─ requires -> client/meta-<region/country/brand> ├─ requires -> client/component-environment-<region/country/brand> └─ requires -> client/meta-gra └─ requires -> magento/product-enterprise-edition
-
Cree el metapaquete GRA:
code language-bash cd .. mkdir meta-gra cd meta-gra composer init --no-interaction \ --name='<client>/meta-gra' \ --description='<client> GRA meta package' \ --type=metapackage \ --require="magento/product-enterprise-edition:<exact.required.version>" git init git add --all git commit -m 'initialize meta package' git remote add origin git@bitbucket.org:<client>/meta-gra.git git push -u origin master git tag 0.1.0 -m "0.1.0" git push --tags
-
Cree el metapaquete de marca:
code language-bash cd .. mkdir meta-<region/country/brand> cd meta-<region/country/brand> composer init --no-interaction \ --name='<client>/meta-<region/country/brand>' \ --description='<client> <region/country/brand> meta package' \ --type=metapackage \ --require="<client>/component-environment-<region/country/brand>:~0.1" \ --require="<client>/meta-gra:~0.1" git init git add --all git commit -m 'initialize meta package' git remote add origin git@bitbucket.org:<client>/meta-<region/country/brand>.git git push -u origin master git tag 0.1.0 -m "0.1.0" git push --tags
-
Requiere la recopilación mediante la administración de dependencias en el proyecto principal:
code language-bash cd ../project-<region/country/brand> rm app/etc/config.php composer remove --no-update magento/product-enterprise-edition composer require --no-update "<client>/meta-<region/country/brand>:~0.1" composer config minimum-stability alpha composer config prefer-stable true composer update git add --all git commit -m 'set up GRA dependency tree' git push origin master git tag 0.1.0 -m "0.1.0" git push --tags
-
Compruebe que Composer ha copiado el
app/etc/config.php
archivo de<client>/component-environment-<region/country/brand>
.
Implementación de código
En el servidor web, puede implementar código mediante Composer, pero no puede actualizar el proyecto principal. Vuelva a instalar el proyecto mediante Composer con cada nueva implementación, lo que elimina el requisito de que los servidores de producción y prueba tengan acceso a Git.
Añadir otras instancias y paquetes
Cada instancia (región, marca o instalación única de Adobe Commerce) debe tener su propia proyecto principal ejemplo, metapaquete específico, y paquete de componentes de entorno. El Metapaquete GRA debería ser compartido en todas las instancias.
Los paquetes funcionales (como módulos, temáticas, paquetes de idiomas y bibliotecas de Adobe Commerce) y los paquetes de terceros deben ser requeridos por:
- Metapaquete GRA: para la instalación en todo instances
- metapaquete específico de instancia: para su instalación en una sola marca o región
composer.json
archivo en el main
o release
ramas.Preparación para el desarrollo
Para desarrollo, instale develop
versiones de todos los módulos que mantiene.
Según su estrategia de ramificación, es posible que tenga develop
, qa
, uat
, y main
ramas. Cada rama existe en Composer con una dev-
prefijo. Por lo tanto, develop
La rama se puede requerir a través del Compositor como versión dev-develop
.
-
Crear
develop
ramas en todos los módulos y repositorios de proyectos.code language-bash cd ../component-environment-<region/country/brand> git checkout master git checkout -b develop git push -u origin develop cd ../meta-<region/country/brand> git checkout master git checkout -b develop git push -u origin develop cd ../meta-gra git checkout master git checkout -b develop git push -u origin develop cd ../project-<region/country/brand> git checkout master git checkout -b develop git push -u origin develop composer require \ "magento-services/meta-fantasy-corp:dev-develop as 0.999" \ "magento-services/meta-gra:dev-develop as 0.999" \ "magento-services/component-environment-fantasy-corp:dev-develop as 0.999"
El paso anterior genera las siguientes líneas en su
composer.json
archivo:code language-json "require": { "magento-services/component-environment-fantasy-corp": "dev-develop as 0.999", "magento-services/meta-fantasy-corp": "dev-develop as 0.999", "magento-services/meta-gra": "dev-develop as 0.999" },
note important IMPORTANT No combinar estos composer.json
cambios de archivo en la rama de producción. Instalar solo versiones estables de paquetes enrelease
ymain
ramas. Puede definir estas dependencias paraqa
ramas y otras ramas no principales.