@codigodoleo/wp-kit 3.1.1 → 3.2.0

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.
Files changed (62) hide show
  1. package/lib/commands/init.js +19 -10
  2. package/lib/config/versions.js +5 -5
  3. package/lib/prompts/index.js +24 -14
  4. package/lib/utils/git.js +50 -13
  5. package/modules/deploy/.github/workflows/deploy-docker.yml +102 -0
  6. package/modules/deploy/.github/workflows/deploy-ssh.yml +126 -0
  7. package/modules/deploy/.github/workflows/release.yml +55 -0
  8. package/modules/deploy/index.js +39 -0
  9. package/modules/deploy/prompts.js +1 -3
  10. package/modules/deploy/templates/.gitlab/ci/deploy-docker.yml.hbs +35 -0
  11. package/modules/deploy/templates/.gitlab/ci/deploy-ssh.yml.hbs +83 -0
  12. package/modules/deploy/templates/.gitlab/ci/release.yml.hbs +26 -0
  13. package/modules/git/.husky/commit-msg +8 -4
  14. package/modules/git/.husky/pre-commit +0 -3
  15. package/modules/git/templates/package.json.hbs +4 -4
  16. package/modules/lint/templates/package.json.hbs +4 -4
  17. package/modules/php/templates/composer.json.hbs +1 -1
  18. package/modules/sage/index.js +114 -15
  19. package/modules/sage/prompts.js +1 -1
  20. package/modules/sage/templates/.devcontainer/devcontainer.json.hbs +7 -0
  21. package/modules/sage/templates/.devcontainer/docker-compose.override.yml.hbs +6 -0
  22. package/modules/sage/templates/.devcontainer/post-create.sh.hbs +11 -0
  23. package/modules/sage/templates/.lando.yml.hbs +34 -48
  24. package/modules/sage/templates/server/cmd/setup-sage-node.sh.hbs +23 -0
  25. package/modules/sage/templates/server/cmd/setup-sage-php.sh.hbs +24 -0
  26. package/modules/sage/templates/theme/app/Blocks/.gitkeep.hbs +0 -0
  27. package/modules/sage/templates/theme/app/Fields/.gitkeep.hbs +0 -0
  28. package/modules/sage/templates/theme/composer.json.hbs +25 -3
  29. package/modules/sage/templates/theme/package.json.hbs +15 -3
  30. package/modules/sage/templates/theme/resources/views/blocks/.gitkeep.hbs +0 -0
  31. package/modules/sage/templates/theme/vite.config.js.hbs +55 -13
  32. package/modules/sage/templates/workspace.json.hbs +94 -6
  33. package/modules/skills/index.js +18 -0
  34. package/modules/skills/prompts.js +21 -0
  35. package/modules/test/index.js +19 -0
  36. package/modules/test/prompts.js +8 -0
  37. package/modules/test/templates/composer.json.hbs +16 -0
  38. package/modules/test/templates/package.json.hbs +11 -0
  39. package/modules/test/templates/playwright.config.js.hbs +29 -0
  40. package/modules/test/tests/Pest.php +39 -0
  41. package/modules/test/tests/SmokeTest.php +15 -0
  42. package/modules/test/tests/e2e/example.spec.js +11 -0
  43. package/modules/test/tests/e2e/helpers/loginHelper.js +40 -0
  44. package/package.json +1 -1
  45. package/templates/.devcontainer/Dockerfile.hbs +24 -0
  46. package/templates/.devcontainer/config/nginx.conf +23 -0
  47. package/templates/.devcontainer/config/nginx.conf.hbs +23 -0
  48. package/templates/.devcontainer/devcontainer.json.hbs +29 -0
  49. package/templates/.devcontainer/docker-compose.yml.hbs +73 -0
  50. package/templates/.devcontainer/setup.sh.hbs +17 -0
  51. package/templates/.env.hbs +38 -15
  52. package/templates/.gitignore.hbs +2 -2
  53. package/templates/.lando.yml.hbs +61 -17
  54. package/templates/README.md.hbs +23 -7
  55. package/templates/composer.json.hbs +4 -3
  56. package/templates/package.json.hbs +0 -2
  57. package/templates/server/cmd/install-wp.sh.hbs +54 -43
  58. package/templates/server/cmd/setup-node.sh.hbs +11 -0
  59. package/templates/server/cmd/setup-php.sh.hbs +14 -0
  60. package/templates/server/www/vhosts.conf.hbs +54 -17
  61. package/templates/workspace.json.hbs +56 -0
  62. package/templates/wp-cli.yml.hbs +1 -0
@@ -1,9 +1,16 @@
1
1
  name: {{projectName}}
2
2
  recipe: wordpress
3
+ env_file:
4
+ - .env
5
+ excludes:
6
+ - vendor
7
+ - node_modules
3
8
  config:
4
9
  webroot: ./
5
10
  via: nginx
6
- php: "{{phpVersion}}"
11
+ php: "8.4"
12
+ database: mariadb
13
+ cache: redis
7
14
  xdebug: true
8
15
  extra_php_extensions:
9
16
  - bcmath
@@ -16,29 +23,66 @@ config:
16
23
  config:
17
24
  php: ./server/php/php.ini
18
25
  vhosts: ./server/www/vhosts.conf
19
- env_file:
20
- - .env
21
26
  services:
22
27
  appserver:
23
- build_as_root:
24
- - apt-get update
25
- - apt-get install -y curl gnupg
26
- - curl -fsSL https://deb.nodesource.com/setup_23.x | bash -
27
- - apt-get install -y nodejs
28
- - npm install -g npm@latest
29
- - npm install -g yarn@1.22
28
+ build:
29
+ - bash /app/server/cmd/setup-php.sh
30
+ overrides:
31
+ extra_hosts:
32
+ - "host.docker.internal:host-gateway"
33
+ environment:
34
+ PHP_IDE_CONFIG: "${PHP_IDE_CONFIG:-serverName=appserver}"
35
+ XDEBUG_MODE: "${XDEBUG_MODE:-develop,debug}"
36
+ XDEBUG_CONFIG: "${XDEBUG_CONFIG:-client_host=host.docker.internal discover_client_host=true}"
37
+ build:
38
+ type: node:24
39
+ ssl: true
40
+ build:
41
+ - bash /app/server/cmd/setup-node.sh
42
+ scanner: false
43
+ overrides:
44
+ ports:
45
+ - 5173:5173
46
+ database:
47
+ type: mariadb:10.11
48
+ portforward: true
49
+ cache:
50
+ type: redis
51
+ portforward: true
52
+ mailhog:
53
+ type: mailhog
54
+ portforward: true
55
+ hogfrom:
56
+ - appserver
30
57
  events:
31
58
  post-start:
32
59
  - bash ./server/cmd/install-wp.sh
33
- - composer install --no-interaction --no-progress --optimize-autoloader
34
60
  tooling:
35
- yarn:
61
+ node:
62
+ service: build
63
+ npm:
64
+ service: build
65
+ dev:
66
+ service: build
67
+ description: Run the Vite development server
68
+ cmd: npm run dev
69
+ redis-cli:
70
+ service: cache
71
+ acorn:
36
72
  service: appserver
37
- yarn-upgrade:
73
+ cmd: wp acorn
74
+ flush:
38
75
  service: appserver
39
- cmd: yarn upgrade --latest
40
- yarn-clean-install:
76
+ description: Flush WordPress and Redis caches
77
+ cmd:
78
+ - appserver: wp rewrite flush
79
+ - appserver: wp cache flush
80
+ - cache: redis-cli FLUSHDB
81
+ dir: /app
82
+ reset-deps:
41
83
  service: appserver
84
+ description: Clean and reinstall all dependencies
42
85
  cmd:
43
- - rm -rf node_modules
44
- - yarn install
86
+ - appserver: rm -rf /app/vendor /app/node_modules
87
+ - appserver: bash /app/server/cmd/setup-php.sh
88
+ - build: bash /app/server/cmd/setup-node.sh
@@ -1,11 +1,27 @@
1
- #
2
- {{projectName}}
1
+ # {{projectName}}
3
2
 
4
- Scaffolded by wp-devops. ## 🧱 Stack - PHP
5
- {{phpVersion}}
6
- - Node.js
7
- {{nodeVersion}}
3
+ Scaffolded by wp-devops.
4
+
5
+ ## 🧱 Stack
6
+
7
+ - PHP {{phpVersion}}
8
+ - Node.js {{nodeVersion}}
9
+
10
+ ## 🧩 Blocos com ACF Composer
11
+
12
+ Quando Sage estiver habilitado, o projeto usa o fluxo de blocos via ACF Composer.
13
+
14
+ - Classes de blocos: `content/themes/{{projectName}}/app/Blocks`
15
+ - Fields do ACF: `content/themes/{{projectName}}/app/Fields`
16
+ - Views Blade dos blocos: `content/themes/{{projectName}}/resources/views/blocks`
17
+
18
+ Fluxo rapido:
19
+ 1. Criar classe do bloco com `wp acorn make:component NomeDoBloco`.
20
+ 2. Definir fields em `app/Fields` com ACF Composer.
21
+ 3. Renderizar o bloco em `resources/views/blocks`.
22
+
23
+ Requisito: plugin Advanced Custom Fields (ACF) ativo no WordPress.
8
24
 
9
25
  ## 👤 Author
10
26
 
11
- {{author}}
27
+ {{author}}
@@ -1,12 +1,13 @@
1
1
  { "name": "{{projectName}}/wordpress", "type": "project", "description": "{{projectDescription}}",
2
2
  "authors": [ { "name": "{{author}}", "email": "{{authorEmail}}" } ], "repositories": { "wpackagist":
3
3
  { "type": "composer", "url": "https://wpackagist.org" } }, "license": "MIT", "require": { "php": ">={{phpVersion}}",
4
- "roots/wordpress": "{{wpCoreVersion}}", "inpsyde/wp-translation-downloader": "^2.5",
4
+ "roots/wordpress": "{{wpCoreVersion}}", "roots/bedrock-autoloader": "^1.0",
5
+ "inpsyde/wp-translation-downloader": "^2.5",
5
6
  "vlucas/phpdotenv": "^5.5" }, "config": { "allow-plugins": { "roots/wordpress-core-installer": true,
6
7
  "inpsyde/wp-translation-downloader": true, "composer/installers": true } }, "extra": {
7
8
  "wordpress-install-dir": "wp", "installer-paths": { "content/plugins/{$name}/": [
8
9
  "type:wordpress-plugin" ], "content/themes/{$name}/": [ "type:wordpress-theme" ],
9
10
  "content/mu-plugins/{$name}/": [ "type:wordpress-muplugin" ] }, "wp-translation-downloader": {
10
- "languages": [ "pt_BR", "en_US", "es_ES" ], "languageRootDir": "content/languages",
11
+ "languages": [ "pt_BR", "en_US" ], "languageRootDir": "content/languages",
11
12
  "virtual-packages": [ { "name": "wordpress/wordpress", "type": "wordpress-core", "version": "{{wpCoreVersion}}"
12
- } ] } } }
13
+ } ] } } }
@@ -22,8 +22,6 @@
22
22
  },
23
23
  "devDependencies": {
24
24
  "@cspell/dict-php": "^4.0.14",
25
- "@cspell/dict-pt-br": "^2.4.0",
26
- "standard-version": "^9.5.0",
27
25
  "eslint": "^9.30.1",
28
26
  "eslint-config-prettier": "^10.1.5",
29
27
  "eslint-plugin-import": "^2.32.0",
@@ -1,43 +1,54 @@
1
- #!/bin/bash # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m'
2
- BLUE='\033[0;34m' NC='\033[0m' # No Color echo -e "${BLUE}🔍 Checking WordPress installation
3
- status...${NC}" # Wait for database to be ready (connectivity only) echo -e "${YELLOW}⏳ Waiting for
4
- database connection...${NC}" echo -e "${BLUE}🔧 Debug: DB_HOST=${WORDPRESS_DB_HOST:-database}
5
- DB_NAME=${WORDPRESS_DB_NAME:-wordpress} DB_USER=${WORDPRESS_DB_USER:-wordpress}${NC}" # Show what
6
- WP-CLI reads from wp-config.php wp config get DB_HOST --path=/app/wp 2>/dev/null || true wp config
7
- get DB_NAME --path=/app/wp 2>/dev/null || true wp config get DB_USER --path=/app/wp 2>/dev/null ||
8
- true # Force-disable SSL/TLS for MySQL client connections in environments where server uses
9
- self-signed certs export MYSQL_SSL_MODE=DISABLED export MYSQLI_OPT_SSL_VERIFY_SERVER_CERT=0
10
- MAX_ATTEMPTS=60 ATTEMPT=0 # PHP/mysqli-based readiness check to bypass mysql CLI TLS verification
11
- issues db_ready() { php -d display_errors=1 -r ' $host = getenv("WORDPRESS_DB_HOST") ?: "database";
12
- $user = getenv("WORDPRESS_DB_USER") ?: "wordpress"; $pass = getenv("WORDPRESS_DB_PASSWORD") ?:
13
- "wordpress"; $name = getenv("WORDPRESS_DB_NAME") ?: "wordpress"; $port = getenv("WORDPRESS_DB_PORT")
14
- ?: 3306; $mysqli = mysqli_init(); if (defined("MYSQLI_OPT_SSL_VERIFY_SERVER_CERT")) {
15
- mysqli_options($mysqli, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, false); } $flags =
16
- defined("MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT") ? MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT :
17
- 0; if (!@mysqli_real_connect($mysqli, $host, $user, $pass, null, (int)$port, null, $flags)) {
18
- fwrite(STDERR, "connect_error: ".mysqli_connect_error().PHP_EOL); exit(1); } @mysqli_query($mysqli,
19
- "CREATE DATABASE IF NOT EXISTS `{$name}`"); $ok = @mysqli_query($mysqli, "SELECT 1"); if (!$ok) {
20
- fwrite(STDERR, "query_error: ".mysqli_error($mysqli).PHP_EOL); exit(1); } exit(0); ' } until
21
- db_ready >/dev/null 2>&1; do ATTEMPT=$((ATTEMPT+1)) if [ "$ATTEMPT" -eq 1 ] || [ $((ATTEMPT % 5))
22
- -eq 0 ]; then echo -e "${BLUE}🔧 Debug: attempting connection (#${ATTEMPT})...${NC}" getent hosts
23
- "${WORDPRESS_DB_HOST:-database}" 2>/dev/null || true # Also surface last error from PHP checker
24
- db_ready 2>&1 >/dev/null | tail -n1 || true fi echo -e "${YELLOW}⌛ Database not ready yet,
25
- waiting...${NC}" sleep 2 if [ "$ATTEMPT" -ge "$MAX_ATTEMPTS" ]; then echo -e "${RED}❌ Timeout
26
- waiting for database connectivity. Aborting.${NC}" exit 1 fi done echo -e "${GREEN}✅ Database
27
- connection established${NC}" # Check if WordPress is already installed if wp core is-installed
28
- --path=/app/wp 2>/dev/null; then echo -e "${GREEN}✅ WordPress is already installed${NC}" echo -e
29
- "${BLUE}📊 Current site info:${NC}" wp option get siteurl --path=/app/wp wp option get admin_email
30
- --path=/app/wp exit 0 fi echo -e "${YELLOW}🚀 WordPress not installed. Starting
31
- installation...${NC}" # Download WordPress core if not present if [ ! -d wp-admin ]; then echo -e
32
- "${BLUE}📥 Downloading WordPress core...${NC}" wp core download --force --path=/app/wp
33
- --skip-content fi # Install WordPress echo -e "${BLUE}🏗️ Installing WordPress...${NC}" wp core
34
- install \ --url="${PROJECT_DOMAIN}" \ --title="${PROJECT_NAME:-WordPress Development}" \
35
- --admin_user="${WORDPRESS_ADMIN_USER:-admin}" \
36
- --admin_password="${WORDPRESS_ADMIN_PASSWORD:-admin}" \
37
- --admin_email="${WORDPRESS_ADMIN_EMAIL:-admin@example.com}" \ --skip-email \ --path=/app/wp echo -e
38
- "${GREEN}✅ WordPress installed successfully!${NC}" # Update permalinks wp rewrite structure
39
- '/%postname%/' --hard --path=/app/wp echo -e "${GREEN}🎉 WordPress setup completed
40
- successfully!${NC}" echo -e "${BLUE}📋 Access Details:${NC}" echo -e "${YELLOW}URL:${NC} ${APP_URL}"
41
- echo -e "${YELLOW}Admin User:${NC} ${WORDPRESS_ADMIN_USER:-admin}" echo -e "${YELLOW}Admin
42
- Password:${NC} ${WORDPRESS_ADMIN_PASSWORD:-admin}" echo -e "${YELLOW}Admin Email:${NC}
43
- ${WORDPRESS_ADMIN_EMAIL:-admin@example.com}"
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ PROJECT_ROOT="${PROJECT_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}"
5
+ WP_PATH="${WP_PATH:-${PROJECT_ROOT}/wp}"
6
+
7
+ # Read a value from .env used when the variable is not exported into the shell environment
8
+ read_dotenv_var() {
9
+ local key="$1"
10
+ local env_file="${PROJECT_ROOT}/.env"
11
+ [ -f "${env_file}" ] || return 1
12
+ grep -E "^${key}=" "${env_file}" | head -n1 | cut -d'=' -f2- | sed "s/^['\"]//; s/['\"]$//"
13
+ }
14
+
15
+ # Resolve SITE_URL from environment or .env
16
+ SITE_URL="${WORDPRESS_SITE_URL:-${APP_URL:-}}"
17
+ if [ -z "${SITE_URL}" ]; then SITE_URL="$(read_dotenv_var WORDPRESS_SITE_URL || true)"; fi
18
+ if [ -z "${SITE_URL}" ]; then SITE_URL="$(read_dotenv_var APP_URL || true)"; fi
19
+ if [ -z "${SITE_URL}" ]; then SITE_URL="https://${PROJECT_DOMAIN:-$(read_dotenv_var PROJECT_DOMAIN || echo 'localhost')}"; fi
20
+
21
+ # WordPress core files are placed by `composer install` via roots/wordpress no wp core download needed.
22
+
23
+ # Wait until the database is ready. Use PHP/PDO directly to avoid MariaDB CLI SSL negotiation issues.
24
+ echo "Waiting for database..."
25
+ DB_HOST="${WORDPRESS_DB_HOST:-database}"
26
+ DB_NAME="${WORDPRESS_DB_NAME:-wordpress}"
27
+ DB_USER="${WORDPRESS_DB_USER:-wordpress}"
28
+ DB_PASS="${WORDPRESS_DB_PASSWORD:-wordpress}"
29
+ max=30; i=0
30
+ until php -r "try { new PDO('mysql:host=${DB_HOST};dbname=${DB_NAME}', '${DB_USER}', '${DB_PASS}'); exit(0); } catch(Exception \$e) { exit(1); }" 2>/dev/null; do
31
+ i=$((i + 1))
32
+ [ "$i" -ge "$max" ] && echo "Database timeout after $((max * 2))s. Aborting." && exit 1
33
+ sleep 2
34
+ done
35
+
36
+ if wp core is-installed --path="${WP_PATH}" 2>/dev/null; then
37
+ echo "WordPress already installed at ${SITE_URL}"
38
+ exit 0
39
+ fi
40
+
41
+ echo "Installing WordPress..."
42
+
43
+ wp core install \
44
+ --url="${SITE_URL}" \
45
+ --title="${PROJECT_NAME:-WordPress Development}" \
46
+ --admin_user="${WORDPRESS_ADMIN_USER:-admin}" \
47
+ --admin_password="${WORDPRESS_ADMIN_PASSWORD:-admin}" \
48
+ --admin_email="${WORDPRESS_ADMIN_EMAIL:-admin@example.com}" \
49
+ --skip-email \
50
+ --path="${WP_PATH}"
51
+
52
+ wp rewrite structure '/%postname%/' --hard --path="${WP_PATH}"
53
+
54
+ echo "WordPress installed successfully."
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env bash
2
+ # Installs root Node.js dependencies via npm.
3
+ # Invoked from: Lando (build service build step), Devcontainer (setup.sh), CI/CD.
4
+ set -euo pipefail
5
+
6
+ PROJECT_ROOT="${PROJECT_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}"
7
+
8
+ echo "Installing Node.js dependencies..."
9
+ cd "${PROJECT_ROOT}"
10
+ npm install
11
+ echo "Node.js dependencies installed."
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env bash
2
+ # Installs root PHP dependencies via Composer.
3
+ # Invoked from: Lando (appserver build step), Devcontainer (setup.sh), CI/CD.
4
+ set -euo pipefail
5
+
6
+ PROJECT_ROOT="${PROJECT_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}"
7
+
8
+ echo "Installing PHP dependencies..."
9
+ composer install \
10
+ --working-dir="${PROJECT_ROOT}" \
11
+ --no-interaction \
12
+ --no-progress \
13
+ --optimize-autoloader
14
+ echo "PHP dependencies installed."
@@ -1,21 +1,58 @@
1
- upstream php { server fpm:9000; } server { listen 80 default_server; listen 443 ssl; server_name
2
- localhost; ssl_certificate /certs/cert.crt; ssl_certificate_key /certs/cert.key; ssl_verify_client
3
- off; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5;
4
- ssl_prefer_server_ciphers on; port_in_redirect off; client_max_body_size 100M; ## Your only path
5
- reference. root "/app"; ## This should be in your http block and if it is, it's not needed here.
6
- index index.php; location = /favicon.ico { log_not_found off; access_log off; } location =
7
- /robots.txt { allow all; log_not_found off; access_log off; } # Add Server-Timing header to track
8
- request time and database response time add_header Server-Timing 'php=$request_time;
9
- db=$upstream_response_time';
1
+ upstream php {
2
+ server fpm:9000;
3
+ }
4
+
5
+ server {
6
+ listen 80 default_server;
7
+ listen 443 ssl;
8
+ server_name localhost;
9
+
10
+ ssl_certificate /certs/cert.crt;
11
+ ssl_certificate_key /certs/cert.key;
12
+ ssl_verify_client off;
13
+ ssl_session_cache shared:SSL:1m;
14
+ ssl_session_timeout 5m;
15
+ ssl_ciphers HIGH:!aNULL:!MD5;
16
+ ssl_prefer_server_ciphers on;
17
+ port_in_redirect off;
18
+ client_max_body_size 100M;
19
+
20
+ root "/app";
21
+ index index.php;
22
+
23
+ location = /favicon.ico {
24
+ log_not_found off;
25
+ access_log off;
26
+ }
27
+
28
+ location = /robots.txt {
29
+ allow all;
30
+ log_not_found off;
31
+ access_log off;
32
+ }
33
+
34
+ add_header Server-Timing 'php=$request_time; db=$upstream_response_time';
10
35
 
11
36
  {{#if useRocket}}
12
- # Include Rocket Nginx configuration include /app/server/www/rocket.conf;
37
+ include /app/server/www/rocket.conf;
13
38
  {{/if}}
14
39
 
15
- location / { # This is cool because no php is touched for static content. # include the "?$args"
16
- part so non-default permalinks doesn't break when using query string try_files $uri $uri/
17
- /index.php?$args; } location ~ \.php$ { #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
18
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_TRANSLATED
19
- $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_intercept_errors on;
20
- fastcgi_pass php; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; } location ~*
21
- \.(js|css|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; } }
40
+ location / {
41
+ try_files $uri $uri/ /index.php?$args;
42
+ }
43
+
44
+ location ~ \.php$ {
45
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
46
+ fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
47
+ include fastcgi_params;
48
+ fastcgi_intercept_errors on;
49
+ fastcgi_pass php;
50
+ fastcgi_buffers 16 16k;
51
+ fastcgi_buffer_size 32k;
52
+ }
53
+
54
+ location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
55
+ expires max;
56
+ log_not_found off;
57
+ }
58
+ }
@@ -171,6 +171,62 @@
171
171
  "panel": "shared"
172
172
  },
173
173
  "problemMatcher": []
174
+ },
175
+ {
176
+ "label": "🐳 Devcontainer: Up",
177
+ "type": "shell",
178
+ "command": "docker",
179
+ "args": ["compose", "-f", ".devcontainer/docker-compose.yml", "up", "-d", "--build"],
180
+ "group": "build",
181
+ "presentation": {
182
+ "echo": true,
183
+ "reveal": "always",
184
+ "focus": false,
185
+ "panel": "shared"
186
+ },
187
+ "problemMatcher": []
188
+ },
189
+ {
190
+ "label": "🐳 Devcontainer: Down",
191
+ "type": "shell",
192
+ "command": "docker",
193
+ "args": ["compose", "-f", ".devcontainer/docker-compose.yml", "down"],
194
+ "group": "build",
195
+ "presentation": {
196
+ "echo": true,
197
+ "reveal": "always",
198
+ "focus": false,
199
+ "panel": "shared"
200
+ },
201
+ "problemMatcher": []
202
+ },
203
+ {
204
+ "label": "🐳 Devcontainer: Rebuild",
205
+ "type": "shell",
206
+ "command": "docker",
207
+ "args": ["compose", "-f", ".devcontainer/docker-compose.yml", "up", "-d", "--build", "--force-recreate"],
208
+ "group": "build",
209
+ "presentation": {
210
+ "echo": true,
211
+ "reveal": "always",
212
+ "focus": false,
213
+ "panel": "shared"
214
+ },
215
+ "problemMatcher": []
216
+ },
217
+ {
218
+ "label": "🐳 Devcontainer: Bootstrap",
219
+ "type": "shell",
220
+ "command": "docker",
221
+ "args": ["compose", "-f", ".devcontainer/docker-compose.yml", "exec", "wordpress", "bash", ".devcontainer/setup.sh"],
222
+ "group": "build",
223
+ "presentation": {
224
+ "echo": true,
225
+ "reveal": "always",
226
+ "focus": false,
227
+ "panel": "shared"
228
+ },
229
+ "problemMatcher": []
174
230
  }
175
231
  ]
176
232
  }
@@ -0,0 +1 @@
1
+ path: wp