@lando/laravel 1.12.0 → 1.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +117 -0
- package/CHANGELOG.md +4 -2
- package/node_modules/@lando/php/CHANGELOG.md +9 -0
- package/node_modules/@lando/php/builders/php.js +6 -6
- package/node_modules/@lando/php/images/8.3-apache/Dockerfile +4 -0
- package/node_modules/@lando/php/images/8.3-fpm/Dockerfile +4 -0
- package/node_modules/@lando/php/images/8.4-apache/Dockerfile +4 -0
- package/node_modules/@lando/php/images/8.4-fpm/Dockerfile +4 -0
- package/node_modules/@lando/php/images/8.5-apache/Dockerfile +4 -0
- package/node_modules/@lando/php/images/8.5-fpm/Dockerfile +4 -0
- package/node_modules/@lando/php/package.json +5 -5
- package/node_modules/@lando/php/scripts/mariadb-compat-install.sh +2 -2
- package/node_modules/@lando/php/scripts/mysql-client-install.sh +9 -1
- package/package.json +6 -6
package/AGENTS.md
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to AI coding assistants when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
|
|
7
|
+
This is the official Lando plugin for Laravel (`@lando/laravel`). It provides a recipe that configures PHP, web server, database, and caching services for Laravel development environments.
|
|
8
|
+
|
|
9
|
+
## Common Commands
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Install dependencies
|
|
13
|
+
npm install
|
|
14
|
+
|
|
15
|
+
# Run linting
|
|
16
|
+
npm run lint
|
|
17
|
+
|
|
18
|
+
# Run unit tests
|
|
19
|
+
npm run test:unit
|
|
20
|
+
|
|
21
|
+
# Run both lint and unit tests
|
|
22
|
+
npm test
|
|
23
|
+
|
|
24
|
+
# Run integration tests (Leia)
|
|
25
|
+
npm run test:leia
|
|
26
|
+
|
|
27
|
+
# Run a single integration test
|
|
28
|
+
npx leia examples/laravel-defaults/README.md -c 'Destroy tests'
|
|
29
|
+
|
|
30
|
+
# Documentation development
|
|
31
|
+
npm run docs:dev # Start dev server
|
|
32
|
+
npm run docs:build # Build docs
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Architecture
|
|
36
|
+
|
|
37
|
+
### Plugin Structure
|
|
38
|
+
|
|
39
|
+
- **builders/** - Service builders that extend Lando's base services
|
|
40
|
+
- `laravel.js` - Main recipe builder, configures all services and tooling
|
|
41
|
+
- `laravel-php.js`, `laravel-nginx.js`, `laravel-mysql.js`, etc. - Service-specific builders that extend `@lando/php`, `@lando/mysql`, etc.
|
|
42
|
+
|
|
43
|
+
- **config/** - Configuration templates
|
|
44
|
+
- `default.conf.tpl` - Nginx vhost template
|
|
45
|
+
- `php.ini`, `mysql.cnf`, `mysql8.cnf` - Service configs
|
|
46
|
+
|
|
47
|
+
- **inits/** - Initialization logic for `lando init` command
|
|
48
|
+
|
|
49
|
+
- **examples/** - Working Lando apps for development and testing. Each example has a `plugins: "@lando/laravel": ../..` directive to use the local source.
|
|
50
|
+
|
|
51
|
+
- **test/** - Unit tests (Mocha/Chai). Name files as `*.spec.js`.
|
|
52
|
+
|
|
53
|
+
### Recipe Configuration Flow
|
|
54
|
+
|
|
55
|
+
The main `builders/laravel.js` exports a recipe that:
|
|
56
|
+
1. Accepts user config (php version, database type, cache, via, webroot, xdebug)
|
|
57
|
+
2. Merges defaults with user overrides
|
|
58
|
+
3. Configures services: appserver (PHP), database, optional cache
|
|
59
|
+
4. Sets up tooling: composer, php, artisan, db-import/export, database CLI
|
|
60
|
+
|
|
61
|
+
### Dependencies
|
|
62
|
+
|
|
63
|
+
This plugin depends on other Lando service plugins:
|
|
64
|
+
- `@lando/php` - PHP/Apache/Nginx services
|
|
65
|
+
- `@lando/mysql`, `@lando/mariadb`, `@lando/postgres`, `@lando/mssql` - Databases
|
|
66
|
+
- `@lando/redis`, `@lando/memcached` - Caching
|
|
67
|
+
|
|
68
|
+
## Testing
|
|
69
|
+
|
|
70
|
+
### Unit Tests
|
|
71
|
+
Place in `test/` with `.spec.js` extension. Run with `npm run test:unit`.
|
|
72
|
+
|
|
73
|
+
### Leia Integration Tests
|
|
74
|
+
Integration tests are written as shell commands in markdown (example READMEs). The markdown follows a specific format with "Start up tests", "Verification commands", and "Destroy tests" sections. See `examples/*/README.md` for examples.
|
|
75
|
+
|
|
76
|
+
**Note:** Integration tests in `examples/` are run by the `pr-laravel-tests.yml` GitHub Actions workflow on pull requests, but only if they are explicitly listed in the workflow's test matrix. New examples must be added to the matrix in `pr-laravel-tests.yml` to be included in CI.
|
|
77
|
+
|
|
78
|
+
## GitHub Actions
|
|
79
|
+
|
|
80
|
+
CI/CD workflows are defined in `.github/workflows/`:
|
|
81
|
+
|
|
82
|
+
### PR Workflows (run on every pull request)
|
|
83
|
+
|
|
84
|
+
| Workflow | File | Purpose |
|
|
85
|
+
|----------|------|---------|
|
|
86
|
+
| **Laravel Tests** | `pr-laravel-tests.yml` | Runs Leia integration tests for examples explicitly listed in the workflow matrix. Tests against Lando 3-edge and 3-stable on Ubuntu. |
|
|
87
|
+
| **Unit Tests** | `pr-unit-tests.yml` | Runs `npm run test:unit` across Windows, Ubuntu, and macOS. |
|
|
88
|
+
| **Lint Code** | `pr-linter.yml` | Runs `npm run lint` to check code style. |
|
|
89
|
+
| **Docs Tests** | `pr-docs-tests.yml` | Builds documentation to verify no broken builds. |
|
|
90
|
+
|
|
91
|
+
### Release Workflow
|
|
92
|
+
|
|
93
|
+
| Workflow | File | Purpose |
|
|
94
|
+
|----------|------|---------|
|
|
95
|
+
| **Publish to NPM** | `release.yml` | Triggered on GitHub release creation. Runs lint + unit tests, then publishes to npm. Stable releases go to `latest` tag; prereleases go to `edge` tag. |
|
|
96
|
+
|
|
97
|
+
### Integration Test Matrix
|
|
98
|
+
|
|
99
|
+
The `pr-laravel-tests.yml` workflow explicitly lists which examples to test. New examples must be added to this list to run in CI.
|
|
100
|
+
|
|
101
|
+
Each test runs against the example's `README.md` using the [Leia](https://github.com/lando/leia) test runner.
|
|
102
|
+
|
|
103
|
+
## Development Workflow
|
|
104
|
+
|
|
105
|
+
1. Use examples directory - apps there reference the local plugin source
|
|
106
|
+
2. To test against an external app, add to its Landofile:
|
|
107
|
+
```yaml
|
|
108
|
+
plugins:
|
|
109
|
+
"@lando/laravel": /path/to/this/plugin
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Code Style
|
|
113
|
+
|
|
114
|
+
- ESLint with Google config, max 140 char lines
|
|
115
|
+
- Node.js 20+
|
|
116
|
+
- JSDoc required for function declarations
|
|
117
|
+
- 2-space indentation
|
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
## {{ UNRELEASED_VERSION }} - [{{ UNRELEASED_DATE }}]({{ UNRELEASED_LINK }})
|
|
2
2
|
|
|
3
|
-
## v1.12.
|
|
3
|
+
## v1.12.1 - [February 22, 2026](https://github.com/lando/laravel/releases/tag/v1.12.1)
|
|
4
|
+
|
|
5
|
+
* Updated to [@lando/php@1.11.1](https://github.com/lando/php/releases/tag/v1.11.1) for PHP 8.5 support, database client auto-detection, and more.
|
|
4
6
|
|
|
5
|
-
## v1.12.0 - [February
|
|
7
|
+
## v1.12.0 - [February 19, 2026](https://github.com/lando/laravel/releases/tag/v1.12.0)
|
|
6
8
|
|
|
7
9
|
* Updated to [@lando/php@1.10.0](https://github.com/lando/php/releases/tag/v1.10.0)
|
|
8
10
|
* Fixed release workflow to trigger on `published` instead of `created` events
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
## {{ UNRELEASED_VERSION }} - [{{ UNRELEASED_DATE }}]({{ UNRELEASED_LINK }})
|
|
2
2
|
|
|
3
|
+
## v1.11.1 - [February 20, 2026](https://github.com/lando/php/releases/tag/v1.11.1)
|
|
4
|
+
|
|
5
|
+
* Fixed database type detection when no version is specified
|
|
6
|
+
* Added npm edge-to-latest tag promotion on release
|
|
7
|
+
|
|
8
|
+
## v1.11.0 - [February 19, 2026](https://github.com/lando/php/releases/tag/v1.11.0)
|
|
9
|
+
|
|
10
|
+
* Fixed database client auto-detection for recipe-based services [#223](https://github.com/lando/php/pull/223)
|
|
11
|
+
|
|
3
12
|
## v1.10.0 - [February 18, 2026](https://github.com/lando/php/releases/tag/v1.10.0)
|
|
4
13
|
|
|
5
14
|
* Added database client auto-detection and version matching [#212](https://github.com/lando/php/pull/212)
|
|
@@ -68,12 +68,12 @@ const detectDatabaseClient = (options, debug = () => {}) => {
|
|
|
68
68
|
|
|
69
69
|
for (const service of Object.values(services)) {
|
|
70
70
|
const type = service?.type || '';
|
|
71
|
-
// Match mysql
|
|
72
|
-
const mysqlMatch = type.match(
|
|
73
|
-
if (mysqlMatch && !mysqlVersion) mysqlVersion = mysqlMatch[1];
|
|
74
|
-
// Match mariadb
|
|
75
|
-
const mariaMatch = type.match(
|
|
76
|
-
if (mariaMatch && !mariaVersion) mariaVersion = mariaMatch[1];
|
|
71
|
+
// Match mysql or mysql:X, including recipe prefixes (e.g., backdrop-mysql, backdrop-mysql:8.0)
|
|
72
|
+
const mysqlMatch = type.match(/(?:^|-)mysql(?::(\d+(?:\.\d+)?))?(?:$|[^a-z])/);
|
|
73
|
+
if (mysqlMatch && !mysqlVersion) mysqlVersion = mysqlMatch[1] || '8.0';
|
|
74
|
+
// Match mariadb or mariadb:X, including recipe prefixes (e.g., backdrop-mariadb:10.6)
|
|
75
|
+
const mariaMatch = type.match(/(?:^|-)mariadb(?::(\d+(?:\.\d+)?))?(?:$|[^a-z])/);
|
|
76
|
+
if (mariaMatch && !mariaVersion) mariaVersion = mariaMatch[1] || '11.4';
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
if (mariaVersion && mysqlVersion) {
|
|
@@ -65,6 +65,10 @@ COPY --from=mysql-client-84 /usr/bin/mysql /usr/local/mysql-client/8.4/mysql
|
|
|
65
65
|
COPY --from=mysql-client-84 /usr/bin/mysqldump /usr/local/mysql-client/8.4/mysqldump
|
|
66
66
|
COPY --from=mysql-client-84 /usr/bin/mysqladmin /usr/local/mysql-client/8.4/mysqladmin
|
|
67
67
|
|
|
68
|
+
# Ensure required MySQL client shared libraries are present
|
|
69
|
+
COPY --from=mysql-client-80 /usr/lib64/libmysqlclient.so* /usr/lib/
|
|
70
|
+
COPY --from=mysql-client-84 /usr/lib64/libmysqlclient.so* /usr/lib/
|
|
71
|
+
|
|
68
72
|
RUN \
|
|
69
73
|
chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
|
|
70
74
|
&& apt-get -y clean \
|
|
@@ -65,6 +65,10 @@ COPY --from=mysql-client-84 /usr/bin/mysql /usr/local/mysql-client/8.4/mysql
|
|
|
65
65
|
COPY --from=mysql-client-84 /usr/bin/mysqldump /usr/local/mysql-client/8.4/mysqldump
|
|
66
66
|
COPY --from=mysql-client-84 /usr/bin/mysqladmin /usr/local/mysql-client/8.4/mysqladmin
|
|
67
67
|
|
|
68
|
+
# Ensure required MySQL client shared libraries are present
|
|
69
|
+
COPY --from=mysql-client-80 /usr/lib64/libmysqlclient.so* /usr/lib/
|
|
70
|
+
COPY --from=mysql-client-84 /usr/lib64/libmysqlclient.so* /usr/lib/
|
|
71
|
+
|
|
68
72
|
RUN \
|
|
69
73
|
chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
|
|
70
74
|
&& apt-get -y clean \
|
|
@@ -65,6 +65,10 @@ COPY --from=mysql-client-84 /usr/bin/mysql /usr/local/mysql-client/8.4/mysql
|
|
|
65
65
|
COPY --from=mysql-client-84 /usr/bin/mysqldump /usr/local/mysql-client/8.4/mysqldump
|
|
66
66
|
COPY --from=mysql-client-84 /usr/bin/mysqladmin /usr/local/mysql-client/8.4/mysqladmin
|
|
67
67
|
|
|
68
|
+
# Ensure required MySQL client shared libraries are present
|
|
69
|
+
COPY --from=mysql-client-80 /usr/lib64/libmysqlclient.so* /usr/lib/
|
|
70
|
+
COPY --from=mysql-client-84 /usr/lib64/libmysqlclient.so* /usr/lib/
|
|
71
|
+
|
|
68
72
|
RUN \
|
|
69
73
|
chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
|
|
70
74
|
&& apt-get -y clean \
|
|
@@ -66,6 +66,10 @@ COPY --from=mysql-client-84 /usr/bin/mysql /usr/local/mysql-client/8.4/mysql
|
|
|
66
66
|
COPY --from=mysql-client-84 /usr/bin/mysqldump /usr/local/mysql-client/8.4/mysqldump
|
|
67
67
|
COPY --from=mysql-client-84 /usr/bin/mysqladmin /usr/local/mysql-client/8.4/mysqladmin
|
|
68
68
|
|
|
69
|
+
# Ensure required MySQL client shared libraries are present
|
|
70
|
+
COPY --from=mysql-client-80 /usr/lib64/libmysqlclient.so* /usr/lib/
|
|
71
|
+
COPY --from=mysql-client-84 /usr/lib64/libmysqlclient.so* /usr/lib/
|
|
72
|
+
|
|
69
73
|
RUN \
|
|
70
74
|
chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
|
|
71
75
|
&& apt-get -y clean \
|
|
@@ -65,6 +65,10 @@ COPY --from=mysql-client-84 /usr/bin/mysql /usr/local/mysql-client/8.4/mysql
|
|
|
65
65
|
COPY --from=mysql-client-84 /usr/bin/mysqldump /usr/local/mysql-client/8.4/mysqldump
|
|
66
66
|
COPY --from=mysql-client-84 /usr/bin/mysqladmin /usr/local/mysql-client/8.4/mysqladmin
|
|
67
67
|
|
|
68
|
+
# Ensure required MySQL client shared libraries are present
|
|
69
|
+
COPY --from=mysql-client-80 /usr/lib64/libmysqlclient.so* /usr/lib/
|
|
70
|
+
COPY --from=mysql-client-84 /usr/lib64/libmysqlclient.so* /usr/lib/
|
|
71
|
+
|
|
68
72
|
RUN \
|
|
69
73
|
chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
|
|
70
74
|
&& apt-get -y clean \
|
|
@@ -66,6 +66,10 @@ COPY --from=mysql-client-84 /usr/bin/mysql /usr/local/mysql-client/8.4/mysql
|
|
|
66
66
|
COPY --from=mysql-client-84 /usr/bin/mysqldump /usr/local/mysql-client/8.4/mysqldump
|
|
67
67
|
COPY --from=mysql-client-84 /usr/bin/mysqladmin /usr/local/mysql-client/8.4/mysqladmin
|
|
68
68
|
|
|
69
|
+
# Ensure required MySQL client shared libraries are present
|
|
70
|
+
COPY --from=mysql-client-80 /usr/lib64/libmysqlclient.so* /usr/lib/
|
|
71
|
+
COPY --from=mysql-client-84 /usr/lib64/libmysqlclient.so* /usr/lib/
|
|
72
|
+
|
|
69
73
|
RUN \
|
|
70
74
|
chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
|
|
71
75
|
&& apt-get -y clean \
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lando/php",
|
|
3
3
|
"description": "A Lando plugin that provides a tight integration with PHP.",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.11.1",
|
|
5
5
|
"author": "Mike Pirog @pirog",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": "lando/php",
|
|
@@ -66,9 +66,9 @@
|
|
|
66
66
|
"semver"
|
|
67
67
|
],
|
|
68
68
|
"dist": {
|
|
69
|
-
"integrity": "sha512-
|
|
70
|
-
"shasum": "
|
|
71
|
-
"filename": "lando-php-1.
|
|
72
|
-
"unpackedSize":
|
|
69
|
+
"integrity": "sha512-YARvLV+LsZ5LloDW2E7r3stkptHPkCtMh7VrEQu7Wa0pNF1N8TAQJlGxIRrWWuVT/6N7mgw+IWgro3CtPlCKsw==",
|
|
70
|
+
"shasum": "74c9af6bc8853760d8ca3a57528658580f99e409",
|
|
71
|
+
"filename": "lando-php-1.11.1.tgz",
|
|
72
|
+
"unpackedSize": 3059346
|
|
73
73
|
}
|
|
74
74
|
}
|
|
@@ -35,8 +35,8 @@ default-character-set=utf8mb4
|
|
|
35
35
|
disable-ssl-verify-server-cert
|
|
36
36
|
|
|
37
37
|
[mysqldump]
|
|
38
|
-
#
|
|
39
|
-
skip-column-statistics
|
|
38
|
+
# MySQL 8 uses this; MariaDB safely ignores it via loose- prefix
|
|
39
|
+
loose-skip-column-statistics
|
|
40
40
|
MYCNF
|
|
41
41
|
|
|
42
42
|
echo "MariaDB compatibility wrappers installed"
|
|
@@ -50,10 +50,18 @@ mkdir -p /etc/mysql/conf.d
|
|
|
50
50
|
cat > /etc/mysql/conf.d/lando.cnf << 'MYCNF'
|
|
51
51
|
[client]
|
|
52
52
|
default-character-set=utf8mb4
|
|
53
|
+
# Use PREFERRED so SSL is used when available but self-signed certs
|
|
54
|
+
# (e.g. MySQL 5.7 defaults) don't cause verification failures.
|
|
55
|
+
# Preserves SSL for servers that support it
|
|
56
|
+
ssl-mode=PREFERRED
|
|
53
57
|
|
|
54
58
|
[mysqldump]
|
|
55
59
|
# Prevent column-statistics errors with newer mysqldump
|
|
56
60
|
skip-column-statistics
|
|
61
|
+
ssl-mode=PREFERRED
|
|
57
62
|
MYCNF
|
|
58
63
|
|
|
59
|
-
mysql --version 2>/dev/null
|
|
64
|
+
if ! mysql --version 2>/dev/null; then
|
|
65
|
+
echo "Error: MySQL client not available after activation"
|
|
66
|
+
exit 1
|
|
67
|
+
fi
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lando/laravel",
|
|
3
3
|
"description": "A Lando plugin that provides a tight integration with Laravel.",
|
|
4
|
-
"version": "1.12.
|
|
4
|
+
"version": "1.12.1",
|
|
5
5
|
"author": "Mike Pirog @pirog",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": "lando/laravel",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@lando/memcached": "^1.4.2",
|
|
48
48
|
"@lando/mssql": "^1.4.3",
|
|
49
49
|
"@lando/mysql": "^1.6.0",
|
|
50
|
-
"@lando/php": "^1.
|
|
50
|
+
"@lando/php": "^1.11.1",
|
|
51
51
|
"@lando/postgres": "^1.5.0",
|
|
52
52
|
"@lando/redis": "^1.2.3",
|
|
53
53
|
"lodash": "^4.17.21"
|
|
@@ -76,9 +76,9 @@
|
|
|
76
76
|
"lodash"
|
|
77
77
|
],
|
|
78
78
|
"dist": {
|
|
79
|
-
"integrity": "sha512-
|
|
80
|
-
"shasum": "
|
|
81
|
-
"filename": "lando-laravel-1.12.
|
|
82
|
-
"unpackedSize":
|
|
79
|
+
"integrity": "sha512-CKW0am1RSHeXCeg3OCF9sJ7phPZCq5a3OiY9yS31+2haf7k8w20DPlqTTjAu811rAwfkOKtPjeG3IbGilBVQEg==",
|
|
80
|
+
"shasum": "e96504b6bc144a881a50d0d10d2e3db298619ea1",
|
|
81
|
+
"filename": "lando-laravel-1.12.1.tgz",
|
|
82
|
+
"unpackedSize": 13203935
|
|
83
83
|
}
|
|
84
84
|
}
|