Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/contao/contao

Contao Open Source CMS
https://github.com/contao/contao

cms contao monorepo php symfony

Last synced: about 2 months ago
JSON representation

Contao Open Source CMS

Awesome Lists containing this project

README

        

Contao Open Source CMS





## About

Contao is a powerful open source CMS that allows you to create professional websites and scalable web applications.
Visit the [project website][1] for more information.

## Purpose

The purpose of this package is to develop the Contao bundles in a monorepo. Use it when you want to create a pull
request or report an issue.

The monorepo is automatically split into separate packages:

* [CalendarBundle](https://github.com/contao/calendar-bundle)
* [CommentsBundle](https://github.com/contao/comments-bundle)
* [CoreBundle](https://github.com/contao/core-bundle)
* [FaqBundle](https://github.com/contao/faq-bundle)
* [ListingBundle](https://github.com/contao/listing-bundle)
* [MakerBundle](https://github.com/contao/maker-bundle)
* [ManagerBundle](https://github.com/contao/manager-bundle)
* [NewsBundle](https://github.com/contao/news-bundle)
* [NewsletterBundle](https://github.com/contao/newsletter-bundle)

**Please do not use `contao/contao` in production**! Use the split packages instead.

## Platinum partners

Thanks to our platinum partners for helping us fund the development of Contao.

## Development

To create a pull request and to test your changes within a running Contao application, it is the easiest to use the
[Contao Managed Edition][2]. Start by installing it in your current directory:

```bash
composer create-project --no-install contao/managed-edition
```

Replace `` with the directory where you want to install the Managed Edition (use `.` for the current
directory). Replace `` with `5.x-dev` if you want to add a new feature, or with `.x-dev` (currently
`4.13.x-dev`) if you want to fix a bug.

Then adjust the `require` section in your `composer.json` file, so Composer loads the monorepo instead of the individual
bundles:

```json
"require": {
"php": "^8.1",
"contao/contao": "5.x-dev"
},
```

Again, use `5.x-dev` if you want to add a new feature or `.x-dev` if you want to fix a bug.

Next, install the dependencies:

```bash
composer update
```

Composer automatically clones the Git repository into the `vendor/contao/contao` folder. You can complete the setup by
running `vendor/bin/contao-setup` on the command line.

Any changes you make in `vendor/contao/contao` will be tracked via Git, so you can submit your pull request directly
from your application.

## Running scripts

First install the code quality tools:

```bash
composer bin all install
```

Then run the code quality scripts via Composer:

```bash
composer all
```

You can also run the scripts separately:

```bash
composer rector
composer ecs
composer service-linter
composer monorepo-tools
composer unit-tests
composer functional-tests
composer phpstan
composer depcheck
```

Use the `--` argument to pass additional flags to the underlying commands:

```bash
composer unit-tests -- --filter CoreBundle
composer ecs -- --clear-cache
```

## Functional tests

To set up the functional tests, create a database named `contao_test`:

```bash
mysql -e "CREATE DATABASE contao_test"
```

If your database uses credentials, copy the file `core-bundle/phpunit.xml.dist` to `core-bundle/phpunit.xml` and adjust
the following line:

```xml

```

Then run the functional tests via Composer:

```bash
composer functional-tests
```

## Node.js

To build the assets, you need a Node.js version >= 18.12 and the [pnpm][3] package manager. Then run these commands:

```bash
pnpm install
pnpm build
```

## End-to-end tests

The Contao end-to-end tests are availabe as an [NPM package][4]. You can install and run them with `pnpm`:

```bash
pnpm add contao-e2e-tests --dev
pnpm contao-e2e-tests
```

## License

Contao is licensed under the terms of the LGPLv3.

## Getting support

Visit the [support page][5] to learn about the available support options.

[1]: https://contao.org
[2]: https://github.com/contao/managed-edition
[3]: https://pnpm.io
[4]: https://www.npmjs.com/package/contao-e2e-tests
[5]: https://to.contao.org/support