#1: Setup Config
This commit is contained in:
parent
f96c46ff99
commit
a5f1725109
45 changed files with 1114 additions and 270 deletions
3
app/.env
3
app/.env
|
@ -4,8 +4,5 @@ APP_SECRET=3a451032bf2c8c9a639dfb642ce825d0
|
|||
###< symfony/framework-bundle ###
|
||||
|
||||
###> doctrine/doctrine-bundle ###
|
||||
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
|
||||
DATABASE_URL="mysql://root:empty@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4"
|
||||
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4"
|
||||
# DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8"
|
||||
###< doctrine/doctrine-bundle ###
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# define your env variables for the test env here
|
||||
KERNEL_CLASS='App\Kernel'
|
||||
APP_SECRET='$ecretf0rt3st'
|
||||
SYMFONY_DEPRECATIONS_HELPER=999999
|
||||
PANTHER_APP_ENV=panther
|
||||
PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots
|
||||
TEST_TOKEN="_test"
|
|
@ -35,6 +35,13 @@
|
|||
"strict": "error",
|
||||
"array-bracket-newline": "error",
|
||||
"yoda": "error",
|
||||
"@typescript-eslint/ban-tslint-comment": "off"
|
||||
"@typescript-eslint/array-type": [
|
||||
"error",
|
||||
{
|
||||
"default": "generic"
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/ban-tslint-comment": "off",
|
||||
"@typescript-eslint/no-non-null-assertion": "off"
|
||||
}
|
||||
}
|
3
app/.stylelintignore
Normal file
3
app/.stylelintignore
Normal file
|
@ -0,0 +1,3 @@
|
|||
*.*
|
||||
!*.css
|
||||
!*.scss
|
13
app/.stylelintrc.json
Normal file
13
app/.stylelintrc.json
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"extends": "stylelint-config-standard",
|
||||
"plugins": [
|
||||
"stylelint-scss"
|
||||
],
|
||||
"rules": {
|
||||
"custom-property-empty-line-before": null,
|
||||
"declaration-empty-line-before": null,
|
||||
"media-feature-range-notation": null,
|
||||
"import-notation": "string",
|
||||
"scss/no-global-function-names": null
|
||||
}
|
||||
}
|
29
app/Makefile
29
app/Makefile
|
@ -17,7 +17,7 @@ up: ## Starts the Local Instance
|
|||
down: ## Stops the Local Instance
|
||||
ifneq (,$(wildcard ./npm-watch.pid))
|
||||
@printf "${RED}Killing ${YELLOW}Encore${CLEAR}!\n"
|
||||
kill $$(cat ./npm-watch.pid)
|
||||
@- kill $$(cat ./npm-watch.pid)
|
||||
@rm -rf ./npm-watch.pid
|
||||
endif
|
||||
@symfony local:server:stop
|
||||
|
@ -33,6 +33,12 @@ fresh: ## Starts a Fresh Local Instance
|
|||
|
||||
##|——[ Code Quality ]————————————————————————————————————————————————————————————————————|
|
||||
test: ## Runs all Unittests
|
||||
@docker compose up -d
|
||||
@symfony console doctrine:database:drop --if-exists --force --env=test
|
||||
@symfony console doctrine:database:create --env=test
|
||||
@symfony console doctrine:migrations:migrate -n --env=test
|
||||
@symfony console doctrine:fixtures:load -n --env=test
|
||||
@symfony console cache:clear --env=test
|
||||
vendor/bin/phpunit
|
||||
|
||||
analyze: ## Runs Static Code Analysis
|
||||
|
@ -42,22 +48,39 @@ lint: ## Runs the Linters
|
|||
@make lint-php -s
|
||||
@make lint-ts -s
|
||||
@make lint-twig -s
|
||||
@make lint-scss -s
|
||||
|
||||
##|——[ Testing ]—————————————————————————————————————————————————————————————————————————|
|
||||
test-unit: ## Runs the Unit tests
|
||||
vendor/bin/phpunit --testsuite Unit
|
||||
|
||||
test-integration: ## Runs the Integration tests
|
||||
@symfony console doctrine:fixtures:load -n --env=test
|
||||
vendor/bin/phpunit --testsuite Integration
|
||||
|
||||
test-web: ## Runs the Web tests
|
||||
@symfony console doctrine:fixtures:load -n --env=test
|
||||
vendor/bin/phpunit --testsuite Web
|
||||
|
||||
##|——[ Linting ]—————————————————————————————————————————————————————————————————————————|
|
||||
lint-php: ## Runs the PHP Linting
|
||||
vendor/bin/php-cs-fixer fix --allow-risky=yes
|
||||
|
||||
lint-ts: ## Runs the Typescript Linting
|
||||
npm run lint:fix
|
||||
npm run lint:ts:fix
|
||||
|
||||
lint-twig: ## Runs Twig Linting
|
||||
vendor/bin/twig-cs-fixer lint --fix
|
||||
php bin/console lint:twig
|
||||
|
||||
lint-scss: ## Runs Twig Linting
|
||||
npm run lint:scss:fix
|
||||
|
||||
##|——[ Data ]————————————————————————————————————————————————————————————————————————————|
|
||||
db-demo: ## Writes the Demo Data to the Local Instance
|
||||
symfony console doctrine:database:drop --if-exists --force
|
||||
symfony console doctrine:database:create
|
||||
symfony console doctrine:schema:update --force
|
||||
symfony console doctrine:migrations:migrate -n
|
||||
symfony console doctrine:fixtures:load -n
|
||||
symfony console cache:clear
|
||||
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
import './styles/app.scss';
|
||||
import '@styles/app.scss';
|
||||
import '@packages/stimulus';
|
|
@ -1,10 +0,0 @@
|
|||
import { startStimulusApp } from '@symfony/stimulus-bridge';
|
||||
|
||||
// Registers Stimulus controllers from controllers.json and in the controllers/ directory
|
||||
export const app = startStimulusApp(require.context(
|
||||
'@symfony/stimulus-bridge/lazy-controller-loader!./controllers',
|
||||
true,
|
||||
/\.[jt]sx?$/
|
||||
));
|
||||
// register any custom, 3rd party controllers here
|
||||
// app.register('some_controller_name', SomeImportedController);
|
|
@ -1,16 +0,0 @@
|
|||
import { Controller } from '@hotwired/stimulus';
|
||||
|
||||
/*
|
||||
* This is an example Stimulus controller!
|
||||
*
|
||||
* Any element with a data-controller="hello" attribute will cause
|
||||
* this controller to be executed. The name "hello" comes from the filename:
|
||||
* hello_controller.js -> "hello"
|
||||
*
|
||||
* Delete this file or adapt it for your use!
|
||||
*/
|
||||
export default class extends Controller {
|
||||
connect() {
|
||||
this.element.textContent = 'Hello Stimulus! Edit me in assets/controllers/hello_controller.js';
|
||||
}
|
||||
}
|
7
app/assets/controllers/hello_controller.ts
Normal file
7
app/assets/controllers/hello_controller.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
import {Controller} from '@hotwired/stimulus';
|
||||
|
||||
export default class extends Controller {
|
||||
connect(): void {
|
||||
this.element.textContent = 'Hello Stimulus! Edit me in assets/controllers/hello_controller.js';
|
||||
}
|
||||
}
|
8
app/assets/packages/stimulus.ts
Normal file
8
app/assets/packages/stimulus.ts
Normal file
|
@ -0,0 +1,8 @@
|
|||
import {startStimulusApp} from '@symfony/stimulus-bridge';
|
||||
import {Application} from '@hotwired/stimulus';
|
||||
|
||||
export const app: Application = startStimulusApp(require.context(
|
||||
'@symfony/stimulus-bridge/lazy-controller-loader!@controllers',
|
||||
true,
|
||||
/\.[jt]sx?$/
|
||||
));
|
|
@ -1,3 +1,3 @@
|
|||
body {
|
||||
background-color: lightgray;
|
||||
:root {
|
||||
$gitKeep: true;
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
{}
|
|
@ -7,7 +7,7 @@
|
|||
"php": ">=8.1",
|
||||
"ext-ctype": "*",
|
||||
"ext-iconv": "*",
|
||||
"doctrine/doctrine-bundle": "^2.11",
|
||||
"doctrine/doctrine-bundle": "^2.12",
|
||||
"doctrine/doctrine-migrations-bundle": "^3.3",
|
||||
"doctrine/orm": "^3.0",
|
||||
"symfony/asset": "6.3.*",
|
||||
|
@ -78,6 +78,7 @@
|
|||
}
|
||||
},
|
||||
"require-dev": {
|
||||
"dama/doctrine-test-bundle": "^8.0",
|
||||
"doctrine/doctrine-fixtures-bundle": "^3.5",
|
||||
"friendsofphp/php-cs-fixer": "^3.49",
|
||||
"phpstan/extension-installer": "^1.3",
|
||||
|
|
95
app/composer.lock
generated
95
app/composer.lock
generated
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "2570c00daac6d35734750c2b68354551",
|
||||
"content-hash": "649904898a2e335698ea9d74665dcdd2",
|
||||
"packages": [
|
||||
{
|
||||
"name": "doctrine/cache",
|
||||
|
@ -342,16 +342,16 @@
|
|||
},
|
||||
{
|
||||
"name": "doctrine/doctrine-bundle",
|
||||
"version": "2.11.1",
|
||||
"version": "2.12.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/doctrine/DoctrineBundle.git",
|
||||
"reference": "4089f1424b724786c062aea50aae5f773449b94b"
|
||||
"reference": "5418e811a14724068e95e0ba43353b903ada530f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/4089f1424b724786c062aea50aae5f773449b94b",
|
||||
"reference": "4089f1424b724786c062aea50aae5f773449b94b",
|
||||
"url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/5418e811a14724068e95e0ba43353b903ada530f",
|
||||
"reference": "5418e811a14724068e95e0ba43353b903ada530f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -372,23 +372,24 @@
|
|||
},
|
||||
"conflict": {
|
||||
"doctrine/annotations": ">=3.0",
|
||||
"doctrine/orm": "<2.14 || >=4.0",
|
||||
"doctrine/orm": "<2.17 || >=4.0",
|
||||
"twig/twig": "<1.34 || >=2.0 <2.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/annotations": "^1 || ^2",
|
||||
"doctrine/coding-standard": "^12",
|
||||
"doctrine/deprecations": "^1.0",
|
||||
"doctrine/orm": "^2.14 || ^3.0",
|
||||
"doctrine/orm": "^2.17 || ^3.0",
|
||||
"friendsofphp/proxy-manager-lts": "^1.0",
|
||||
"phpunit/phpunit": "^9.5.26 || ^10.0",
|
||||
"phpunit/phpunit": "^9.5.26",
|
||||
"psalm/plugin-phpunit": "^0.18.4",
|
||||
"psalm/plugin-symfony": "^4",
|
||||
"psalm/plugin-symfony": "^5",
|
||||
"psr/log": "^1.1.4 || ^2.0 || ^3.0",
|
||||
"symfony/phpunit-bridge": "^6.1 || ^7.0",
|
||||
"symfony/property-info": "^5.4 || ^6.0 || ^7.0",
|
||||
"symfony/proxy-manager-bridge": "^5.4 || ^6.0 || ^7.0",
|
||||
"symfony/security-bundle": "^5.4 || ^6.0 || ^7.0",
|
||||
"symfony/stopwatch": "^5.4 || ^6.0 || ^7.0",
|
||||
"symfony/string": "^5.4 || ^6.0 || ^7.0",
|
||||
"symfony/twig-bridge": "^5.4 || ^6.0 || ^7.0",
|
||||
"symfony/validator": "^5.4 || ^6.0 || ^7.0",
|
||||
|
@ -396,7 +397,7 @@
|
|||
"symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0",
|
||||
"symfony/yaml": "^5.4 || ^6.0 || ^7.0",
|
||||
"twig/twig": "^1.34 || ^2.12 || ^3.0",
|
||||
"vimeo/psalm": "^4.30"
|
||||
"vimeo/psalm": "^5.15"
|
||||
},
|
||||
"suggest": {
|
||||
"doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
|
||||
|
@ -406,7 +407,7 @@
|
|||
"type": "symfony-bundle",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Doctrine\\Bundle\\DoctrineBundle\\": ""
|
||||
"Doctrine\\Bundle\\DoctrineBundle\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
|
@ -441,7 +442,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/doctrine/DoctrineBundle/issues",
|
||||
"source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.1"
|
||||
"source": "https://github.com/doctrine/DoctrineBundle/tree/2.12.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -457,7 +458,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-11-15T20:01:50+00:00"
|
||||
"time": "2024-03-19T07:20:37+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/doctrine-migrations-bundle",
|
||||
|
@ -5565,6 +5566,74 @@
|
|||
],
|
||||
"time": "2022-02-25T21:32:43+00:00"
|
||||
},
|
||||
{
|
||||
"name": "dama/doctrine-test-bundle",
|
||||
"version": "v8.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/dmaicher/doctrine-test-bundle.git",
|
||||
"reference": "f10de294e41570d027a301554a609c394d40e669"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/f10de294e41570d027a301554a609c394d40e669",
|
||||
"reference": "f10de294e41570d027a301554a609c394d40e669",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"doctrine/dbal": "^3.3 || ^4.0",
|
||||
"doctrine/doctrine-bundle": "^2.2.2",
|
||||
"ext-json": "*",
|
||||
"php": "^7.3 || ^8.0",
|
||||
"psr/cache": "^1.0 || ^2.0 || ^3.0",
|
||||
"symfony/cache": "^5.4 || ^6.3 || ^7.0",
|
||||
"symfony/framework-bundle": "^5.4 || ^6.3 || ^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"behat/behat": "^3.0",
|
||||
"friendsofphp/php-cs-fixer": "^3.27",
|
||||
"phpstan/phpstan": "^1.2",
|
||||
"phpunit/phpunit": "^8.0 || ^9.0 || ^10.0",
|
||||
"symfony/phpunit-bridge": "^6.3",
|
||||
"symfony/process": "^5.4 || ^6.3 || ^7.0",
|
||||
"symfony/yaml": "^5.4 || ^6.3 || ^7.0"
|
||||
},
|
||||
"type": "symfony-bundle",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "8.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"DAMA\\DoctrineTestBundle\\": "src/DAMA/DoctrineTestBundle"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "David Maicher",
|
||||
"email": "mail@dmaicher.de"
|
||||
}
|
||||
],
|
||||
"description": "Symfony bundle to isolate doctrine database tests and improve test performance",
|
||||
"keywords": [
|
||||
"doctrine",
|
||||
"isolation",
|
||||
"performance",
|
||||
"symfony",
|
||||
"testing",
|
||||
"tests"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/dmaicher/doctrine-test-bundle/issues",
|
||||
"source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v8.0.2"
|
||||
},
|
||||
"time": "2024-02-15T08:28:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/data-fixtures",
|
||||
"version": "1.7.0",
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
|
||||
Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true],
|
||||
|
@ -12,4 +14,5 @@ return [
|
|||
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
|
||||
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true],
|
||||
Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],
|
||||
DAMA\DoctrineTestBundle\DAMADoctrineTestBundle::class => ['test' => true],
|
||||
];
|
||||
|
|
|
@ -1,19 +1,2 @@
|
|||
framework:
|
||||
cache:
|
||||
# Unique name of your app: used to compute stable namespaces for cache keys.
|
||||
#prefix_seed: your_vendor_name/app_name
|
||||
|
||||
# The "app" cache stores to the filesystem by default.
|
||||
# The data in this cache should persist between deploys.
|
||||
# Other options include:
|
||||
|
||||
# Redis
|
||||
#app: cache.adapter.redis
|
||||
#default_redis_provider: redis://localhost
|
||||
|
||||
# APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues)
|
||||
#app: cache.adapter.apcu
|
||||
|
||||
# Namespaced pools use the above "app" backend by default
|
||||
#pools:
|
||||
#my.dedicated.cache: null
|
||||
|
|
5
app/config/packages/dama_doctrine_test_bundle.yaml
Normal file
5
app/config/packages/dama_doctrine_test_bundle.yaml
Normal file
|
@ -0,0 +1,5 @@
|
|||
when@test:
|
||||
dama_doctrine_test:
|
||||
enable_static_connection: true
|
||||
enable_static_meta_data_cache: true
|
||||
enable_static_query_cache: true
|
|
@ -1,5 +1,3 @@
|
|||
when@dev:
|
||||
debug:
|
||||
# Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser.
|
||||
# See the "server:dump" command to start a new server.
|
||||
dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%"
|
||||
|
|
|
@ -13,15 +13,17 @@ doctrine:
|
|||
App:
|
||||
type: attribute
|
||||
is_bundle: false
|
||||
dir: '%kernel.project_dir%/src/Entity'
|
||||
prefix: 'App\Entity'
|
||||
dir: '%kernel.project_dir%/src'
|
||||
prefix: 'App'
|
||||
alias: App
|
||||
|
||||
when@test:
|
||||
doctrine:
|
||||
dbal:
|
||||
# "TEST_TOKEN" is typically set by ParaTest
|
||||
dbname_suffix: '_test%env(default::TEST_TOKEN)%'
|
||||
connections:
|
||||
default:
|
||||
dbname_suffix: '%env(TEST_TOKEN)%'
|
||||
use_savepoints: true
|
||||
|
||||
when@prod:
|
||||
doctrine:
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
doctrine_migrations:
|
||||
migrations_paths:
|
||||
# namespace is arbitrary but should be different from App\Migrations
|
||||
# as migrations classes should NOT be autoloaded
|
||||
'DoctrineMigrations': '%kernel.project_dir%/migrations'
|
||||
enable_profiler: false
|
||||
|
|
|
@ -1,20 +1,14 @@
|
|||
# see https://symfony.com/doc/current/reference/configuration/framework.html
|
||||
framework:
|
||||
secret: '%env(APP_SECRET)%'
|
||||
#csrf_protection: true
|
||||
http_method_override: false
|
||||
handle_all_throwables: true
|
||||
|
||||
# Enables session support. Note that the session will ONLY be started if you read or write from it.
|
||||
# Remove or comment this section to explicitly disable session support.
|
||||
session:
|
||||
handler_id: null
|
||||
cookie_secure: auto
|
||||
cookie_samesite: lax
|
||||
storage_factory_id: session.storage.factory.native
|
||||
|
||||
#esi: true
|
||||
#fragments: true
|
||||
php_errors:
|
||||
log: true
|
||||
|
||||
|
@ -23,3 +17,8 @@ when@test:
|
|||
test: true
|
||||
session:
|
||||
storage_factory_id: session.storage.factory.mock_file
|
||||
|
||||
when@prod:
|
||||
framework:
|
||||
session:
|
||||
handler_id: 'file://%kernel_project_dir%/var/sessions'
|
|
@ -10,14 +10,6 @@ when@dev:
|
|||
path: "%kernel.logs_dir%/%kernel.environment%.log"
|
||||
level: debug
|
||||
channels: ["!event"]
|
||||
# uncomment to get logging in your browser
|
||||
# you may have to allow bigger header sizes in your Web server configuration
|
||||
#firephp:
|
||||
# type: firephp
|
||||
# level: info
|
||||
#chromephp:
|
||||
# type: chromephp
|
||||
# level: info
|
||||
console:
|
||||
type: console
|
||||
process_psr_3_messages: false
|
||||
|
@ -48,7 +40,7 @@ when@prod:
|
|||
buffer_size: 50 # How many messages should be saved? Prevent memory leaks
|
||||
nested:
|
||||
type: stream
|
||||
path: php://stderr
|
||||
path: "%kernel.logs_dir%/%kernel.environment%.log"
|
||||
level: debug
|
||||
formatter: monolog.formatter.json
|
||||
console:
|
||||
|
@ -58,5 +50,4 @@ when@prod:
|
|||
deprecation:
|
||||
type: stream
|
||||
channels: [deprecation]
|
||||
path: php://stderr
|
||||
formatter: monolog.formatter.json
|
||||
path: "%kernel.logs_dir%/%kernel.environment%.log"
|
|
@ -2,10 +2,6 @@ framework:
|
|||
router:
|
||||
utf8: true
|
||||
|
||||
# Configure how to generate URLs in non-HTTP contexts, such as CLI commands.
|
||||
# See https://symfony.com/doc/current/routing.html#generating-urls-in-commands
|
||||
#default_uri: http://localhost
|
||||
|
||||
when@prod:
|
||||
framework:
|
||||
router:
|
||||
|
|
|
@ -2,11 +2,6 @@ framework:
|
|||
validation:
|
||||
email_validation_mode: html5
|
||||
|
||||
# Enables validator auto-mapping support.
|
||||
# For instance, basic validation constraints will be inferred from Doctrine's metadata.
|
||||
#auto_mapping:
|
||||
# App\Entity\: []
|
||||
|
||||
when@test:
|
||||
framework:
|
||||
validation:
|
||||
|
|
|
@ -1,45 +1,8 @@
|
|||
webpack_encore:
|
||||
# The path where Encore is building the assets - i.e. Encore.setOutputPath()
|
||||
output_path: '%kernel.project_dir%/public/build'
|
||||
# If multiple builds are defined (as shown below), you can disable the default build:
|
||||
# output_path: false
|
||||
|
||||
# Set attributes that will be rendered on all script and link tags
|
||||
script_attributes:
|
||||
defer: true
|
||||
# Uncomment (also under link_attributes) if using Turbo Drive
|
||||
# https://turbo.hotwired.dev/handbook/drive#reloading-when-assets-change
|
||||
# 'data-turbo-track': reload
|
||||
# link_attributes:
|
||||
# Uncomment if using Turbo Drive
|
||||
# 'data-turbo-track': reload
|
||||
|
||||
# If using Encore.enableIntegrityHashes() and need the crossorigin attribute (default: false, or use 'anonymous' or 'use-credentials')
|
||||
# crossorigin: 'anonymous'
|
||||
|
||||
# Preload all rendered script and link tags automatically via the HTTP/2 Link header
|
||||
# preload: true
|
||||
|
||||
# Throw an exception if the entrypoints.json file is missing or an entry is missing from the data
|
||||
# strict_mode: false
|
||||
|
||||
# If you have multiple builds:
|
||||
# builds:
|
||||
# frontend: '%kernel.project_dir%/public/frontend/build'
|
||||
|
||||
# pass the build name as the 3rd argument to the Twig functions
|
||||
# {{ encore_entry_script_tags('entry1', null, 'frontend') }}
|
||||
|
||||
framework:
|
||||
assets:
|
||||
json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'
|
||||
|
||||
#when@prod:
|
||||
# webpack_encore:
|
||||
# # Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes)
|
||||
# # Available in version 1.2
|
||||
# cache: true
|
||||
|
||||
#when@test:
|
||||
# webpack_encore:
|
||||
# strict_mode: false
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
if (file_exists(dirname(__DIR__).'/var/cache/prod/App_KernelProdContainer.preload.php')) {
|
||||
require dirname(__DIR__).'/var/cache/prod/App_KernelProdContainer.preload.php';
|
||||
}
|
||||
|
|
7
app/config/routes.php
Normal file
7
app/config/routes.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
|
||||
|
||||
return function (RoutingConfigurator $routes) {
|
||||
$routes->import('../src/*', 'attribute');
|
||||
};
|
|
@ -1,5 +0,0 @@
|
|||
controllers:
|
||||
resource:
|
||||
path: ../src/Controller/
|
||||
namespace: App\Controller
|
||||
type: attribute
|
18
app/config/services.php
Normal file
18
app/config/services.php
Normal file
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
|
||||
|
||||
return function (ContainerConfigurator $container): void {
|
||||
$services = $container->services()
|
||||
->defaults()
|
||||
->autowire()
|
||||
->autoconfigure()
|
||||
;
|
||||
|
||||
$services
|
||||
->load('App\\', '../src/')
|
||||
->exclude('../src/{DependencyInjection,Entity,Kernel.php}')
|
||||
;
|
||||
};
|
|
@ -1,24 +0,0 @@
|
|||
# This file is the entry point to configure your own services.
|
||||
# Files in the packages/ subdirectory configure your dependencies.
|
||||
|
||||
# Put parameters here that don't need to change on each machine where the app is deployed
|
||||
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
|
||||
parameters:
|
||||
|
||||
services:
|
||||
# default configuration for services in *this* file
|
||||
_defaults:
|
||||
autowire: true # Automatically injects dependencies in your services.
|
||||
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
|
||||
|
||||
# makes classes in src/ available to be used as services
|
||||
# this creates a service per class whose id is the fully-qualified class name
|
||||
App\:
|
||||
resource: '../src/'
|
||||
exclude:
|
||||
- '../src/DependencyInjection/'
|
||||
- '../src/Entity/'
|
||||
- '../src/Kernel.php'
|
||||
|
||||
# add more service definitions when explicit configuration is needed
|
||||
# please note that last definitions always *replace* previous ones
|
14
app/config/services_dev.php
Normal file
14
app/config/services_dev.php
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
|
||||
|
||||
return function (ContainerConfigurator $container): void {
|
||||
$services = $container->services()
|
||||
->defaults()
|
||||
->autowire()
|
||||
->autoconfigure();
|
||||
|
||||
$services->load('DoctrineFixtures\\', '../fixtures');
|
||||
};
|
14
app/config/services_test.php
Normal file
14
app/config/services_test.php
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
|
||||
|
||||
return function (ContainerConfigurator $container): void {
|
||||
$services = $container->services()
|
||||
->defaults()
|
||||
->autowire()
|
||||
->autoconfigure();
|
||||
|
||||
$services->load('DoctrineFixtures\\', '../fixtures');
|
||||
};
|
0
app/fixtures/.gitkeep
Normal file
0
app/fixtures/.gitkeep
Normal file
835
app/package-lock.json
generated
835
app/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -15,6 +15,8 @@
|
|||
"regenerator-runtime": "^0.13.9",
|
||||
"sass": "^1.69.5",
|
||||
"sass-loader": "^13.3.2",
|
||||
"stylelint": "^16.3.1",
|
||||
"stylelint-config-standard-scss": "^13.1.0",
|
||||
"ts-loader": "^9.5.0",
|
||||
"typescript": "^5.2.2",
|
||||
"webpack": "^5.74.0",
|
||||
|
@ -24,14 +26,20 @@
|
|||
"license": "UNLICENSED",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev-server": "encore dev-server",
|
||||
"dev": "encore dev",
|
||||
"h": "encore --help",
|
||||
"dev:server": "encore dev-server",
|
||||
"watch": "encore dev --watch",
|
||||
"build": "encore production --progress",
|
||||
"lint": "eslint assets",
|
||||
"lint:fix": "eslint assets --fix"
|
||||
"lint:ts": "eslint assets",
|
||||
"lint:ts:fix": "eslint assets --fix",
|
||||
"lint:scss": "stylelint assets",
|
||||
"lint:scss:fix": "stylelint assets --fix"
|
||||
},
|
||||
"volta": {
|
||||
"node": "20.9.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"tsconfig-paths-webpack-plugin": "^4.1.0"
|
||||
}
|
||||
}
|
||||
|
|
2
app/php.ini
Normal file
2
app/php.ini
Normal file
|
@ -0,0 +1,2 @@
|
|||
xdebug.mode = debug
|
||||
xdebug.start_with_request = trigger
|
|
@ -18,15 +18,25 @@
|
|||
</php>
|
||||
|
||||
<testsuites>
|
||||
<testsuite name="Project Test Suite">
|
||||
<directory>tests</directory>
|
||||
<testsuite name="Unit">
|
||||
<directory>tests/Unit</directory>
|
||||
</testsuite>
|
||||
<testsuite name="Integration">
|
||||
<directory>tests/Integration</directory>
|
||||
</testsuite>
|
||||
<testsuite name="Web">
|
||||
<directory>tests/Web</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
tests
|
||||
|
||||
<coverage processUncoveredFiles="true">
|
||||
<include>
|
||||
<directory suffix=".php">src</directory>
|
||||
</include>
|
||||
<exclude>
|
||||
<directory suffix="Entity.php">src</directory>
|
||||
<directory suffix="Fixtures.php">fixtures</directory>
|
||||
</exclude>
|
||||
</coverage>
|
||||
|
||||
<listeners>
|
||||
|
@ -34,5 +44,6 @@ tests
|
|||
</listeners>
|
||||
|
||||
<extensions>
|
||||
<extension class="DAMA\DoctrineTestBundle\PHPUnit\PHPUnitExtension"/>
|
||||
</extensions>
|
||||
</phpunit>
|
|
@ -1,19 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\DataFixtures;
|
||||
|
||||
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||
use Doctrine\Persistence\ObjectManager;
|
||||
|
||||
class AppFixtures extends Fixture
|
||||
{
|
||||
public function load(ObjectManager $manager): void
|
||||
{
|
||||
// $product = new Product();
|
||||
// $manager->persist($product);
|
||||
|
||||
$manager->flush();
|
||||
}
|
||||
}
|
|
@ -1,4 +1,16 @@
|
|||
{
|
||||
"dama/doctrine-test-bundle": {
|
||||
"version": "8.0",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes-contrib",
|
||||
"branch": "main",
|
||||
"version": "7.2",
|
||||
"ref": "896306d79d4ee143af9eadf9b09fd34a8c391b70"
|
||||
},
|
||||
"files": [
|
||||
"config/packages/dama_doctrine_test_bundle.yaml"
|
||||
]
|
||||
},
|
||||
"doctrine/doctrine-bundle": {
|
||||
"version": "2.11",
|
||||
"recipe": {
|
||||
|
@ -182,7 +194,7 @@
|
|||
"files": [
|
||||
"assets/bootstrap.js",
|
||||
"assets/controllers.json",
|
||||
"assets/controllers/hello_controller.js"
|
||||
"assets/controllers/hello_controller.ts"
|
||||
]
|
||||
},
|
||||
"symfony/twig-bundle": {
|
||||
|
|
0
app/tests/Integration/.gitkeep
Normal file
0
app/tests/Integration/.gitkeep
Normal file
0
app/tests/Unit/.gitkeep
Normal file
0
app/tests/Unit/.gitkeep
Normal file
0
app/tests/Web/.gitkeep
Normal file
0
app/tests/Web/.gitkeep
Normal file
|
@ -7,9 +7,16 @@
|
|||
"noImplicitAny": true,
|
||||
"strict": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"esModuleInterop": true
|
||||
"esModuleInterop": true,
|
||||
"baseUrl": "./",
|
||||
"paths": {
|
||||
"@src/*": ["./*"],
|
||||
"@packages/*": ["./packages/*"],
|
||||
"@controllers/*": ["./controllers/*"],
|
||||
"@styles/*": ["./styles/*"],
|
||||
}
|
||||
},
|
||||
"files": [
|
||||
"assets"
|
||||
".assets/**/*.ts"
|
||||
]
|
||||
}
|
|
@ -1,76 +1,41 @@
|
|||
const Encore = require('@symfony/webpack-encore');
|
||||
|
||||
// Manually configure the runtime environment if not already configured yet by the "encore" command.
|
||||
// It's useful when you use tools that rely on webpack.config.js file.
|
||||
const Encore = require('@symfony/webpack-encore');
|
||||
const path = require('path');
|
||||
const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
|
||||
|
||||
if (!Encore.isRuntimeEnvironmentConfigured()) {
|
||||
Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev');
|
||||
}
|
||||
|
||||
const ROOT_PATH = path.resolve(__dirname, './');
|
||||
const ASSETS_PATH = ROOT_PATH + '/assets';
|
||||
|
||||
const ALIASES = {
|
||||
'@src' : ASSETS_PATH,
|
||||
'@packages' : ASSETS_PATH + '/packages',
|
||||
'@controllers' : ASSETS_PATH + '/controllers',
|
||||
'@styles' : ASSETS_PATH + '/styles'
|
||||
};
|
||||
|
||||
Encore
|
||||
// directory where compiled assets will be stored
|
||||
.setOutputPath('public/build/')
|
||||
// public path used by the web server to access the output path
|
||||
.setPublicPath('/build')
|
||||
// only needed for CDN's or subdirectory deploy
|
||||
//.setManifestKeyPrefix('build/')
|
||||
|
||||
/*
|
||||
* ENTRY CONFIG
|
||||
*
|
||||
* Each entry will result in one JavaScript file (e.g. app.js)
|
||||
* and one CSS file (e.g. app.css) if your JavaScript imports CSS.
|
||||
*/
|
||||
.addAliases(ALIASES)
|
||||
.addEntry('app', './assets/app.ts')
|
||||
|
||||
// When enabled, Webpack "splits" your files into smaller pieces for greater optimization.
|
||||
.splitEntryChunks()
|
||||
|
||||
// enables the Symfony UX Stimulus bridge (used in assets/bootstrap.js)
|
||||
.enableStimulusBridge('./assets/controllers.json')
|
||||
|
||||
// will require an extra script tag for runtime.js
|
||||
// but, you probably want this, unless you're building a single-page app
|
||||
.splitEntryChunks()
|
||||
.enableSingleRuntimeChunk()
|
||||
|
||||
/*
|
||||
* FEATURE CONFIG
|
||||
*
|
||||
* Enable & configure other features below. For a full
|
||||
* list of features, see:
|
||||
* https://symfony.com/doc/current/frontend.html#adding-more-features
|
||||
*/
|
||||
.cleanupOutputBeforeBuild()
|
||||
.enableBuildNotifications()
|
||||
.enableSourceMaps(!Encore.isProduction())
|
||||
// enables hashed filenames (e.g. app.abc123.css)
|
||||
.enableVersioning(Encore.isProduction())
|
||||
|
||||
// configure Babel
|
||||
// .configureBabel((config) => {
|
||||
// config.plugins.push('@babel/a-babel-plugin');
|
||||
// })
|
||||
|
||||
// enables and configure @babel/preset-env polyfills
|
||||
.configureBabelPresetEnv((config) => {
|
||||
config.useBuiltIns = 'usage';
|
||||
config.corejs = '3.23';
|
||||
})
|
||||
|
||||
// enables Sass/SCSS support
|
||||
.enableSassLoader()
|
||||
|
||||
// uncomment if you use TypeScript
|
||||
.enableTypeScriptLoader()
|
||||
|
||||
// uncomment if you use React
|
||||
//.enableReactPreset()
|
||||
|
||||
// uncomment to get integrity="..." attributes on your script & link tags
|
||||
// requires WebpackEncoreBundle 1.4 or higher
|
||||
//.enableIntegrityHashes(Encore.isProduction())
|
||||
|
||||
// uncomment if you're having problems with a jQuery plugin
|
||||
//.autoProvidejQuery()
|
||||
.enableForkedTypeScriptTypesChecking()
|
||||
;
|
||||
|
||||
module.exports = Encore.getWebpackConfig();
|
||||
|
|
Loading…
Reference in a new issue