diff --git a/.ddev/config.yaml b/.ddev/config.yaml new file mode 100644 index 0000000000..a1d23dd388 --- /dev/null +++ b/.ddev/config.yaml @@ -0,0 +1,264 @@ +name: drupal-project +type: drupal9 +docroot: public +php_version: "7.4" +webserver_type: apache-fpm +router_http_port: "80" +router_https_port: "443" +xdebug_enabled: false +additional_hostnames: [] +additional_fqdns: [] +database: + type: mysql + version: "8.0" +nfs_mount_enabled: false +mutagen_enabled: false +webimage_extra_packages: [php-bcmath, php-intl, php-ldap, php-soap, php-zip] +project_tld: test +use_dns_when_possible: true +timezone: America/Vancouver +composer_version: "2" +disable_settings_management: true +web_environment: [] +nodejs_version: "16" + +# Key features of ddev's config.yaml: + +# name: # Name of the project, automatically provides +# http://projectname.ddev.site and https://projectname.ddev.site + +# type: # drupal6/7/8, backdrop, typo3, wordpress, php + +# docroot: # Relative path to the directory containing index.php. + +# php_version: "7.4" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2" + +# You can explicitly specify the webimage but this +# is not recommended, as the images are often closely tied to ddev's' behavior, +# so this can break upgrades. + +# webimage: # nginx/php docker image. + +# database: +# type: # mysql, mariadb +# version: # database version, like "10.3" or "8.0" +# Note that mariadb_version or mysql_version from v1.18 and earlier +# will automatically be converted to this notation with just a "ddev config --auto" + +# router_http_port: # Port to be used for http (defaults to port 80) +# router_https_port: # Port for https (defaults to 443) + +# xdebug_enabled: false # Set to true to enable xdebug and "ddev start" or "ddev restart" +# Note that for most people the commands +# "ddev xdebug" to enable xdebug and "ddev xdebug off" to disable it work better, +# as leaving xdebug enabled all the time is a big performance hit. + +# xhprof_enabled: false # Set to true to enable xhprof and "ddev start" or "ddev restart" +# Note that for most people the commands +# "ddev xhprof" to enable xhprof and "ddev xhprof off" to disable it work better, +# as leaving xhprof enabled all the time is a big performance hit. + +# webserver_type: nginx-fpm # or apache-fpm + +# timezone: Europe/Berlin +# This is the timezone used in the containers and by PHP; +# it can be set to any valid timezone, +# see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones +# For example Europe/Dublin or MST7MDT + +# composer_root: +# Relative path to the composer root directory from the project root. This is +# the directory which contains the composer.json and where all Composer related +# commands are executed. + +# composer_version: "2" +# You can set it to "" or "2" (default) for Composer v2 or "1" for Composer v1 +# to use the latest major version available at the time your container is built. +# It is also possible to use each other Composer version channel. This includes: +# - 2.2 (latest Composer LTS version) +# - stable +# - preview +# - snapshot +# Alternatively, an explicit Composer version may be specified, for example "2.2.18". +# To reinstall Composer after the image was built, run "ddev debug refresh". + +# nodejs_version: "16" +# change from the default system Node.js version to another supported version, like 12, 14, 17, 18. +# Note that you can use 'ddev nvm' or nvm inside the web container to provide nearly any +# Node.js version, including v6, etc. + +# additional_hostnames: +# - somename +# - someothername +# would provide http and https URLs for "somename.ddev.site" +# and "someothername.ddev.site". + +# additional_fqdns: +# - example.com +# - sub1.example.com +# would provide http and https URLs for "example.com" and "sub1.example.com" +# Please take care with this because it can cause great confusion. + +# upload_dir: custom/upload/dir +# would set the destination path for ddev import-files to /custom/upload/dir +# When mutagen is enabled this path is bind-mounted so that all the files +# in the upload_dir don't have to be synced into mutagen + +# working_dir: +# web: /var/www/html +# db: /home +# would set the default working directory for the web and db services. +# These values specify the destination directory for ddev ssh and the +# directory in which commands passed into ddev exec are run. + +# omit_containers: [db, dba, ddev-ssh-agent] +# Currently only these containers are supported. Some containers can also be +# omitted globally in the ~/.ddev/global_config.yaml. Note that if you omit +# the "db" container, several standard features of ddev that access the +# database container will be unusable. In the global configuration it is also +# possible to omit ddev-router, but not here. + +# nfs_mount_enabled: false +# Great performance improvement but requires host configuration first. +# See https://ddev.readthedocs.io/en/latest/users/install/performance/#nfs + +# mutagen_enabled: false +# Performance improvement using mutagen asynchronous updates. +# See https://ddev.readthedocs.io/en/latest/users/install/performance/#mutagen + +# fail_on_hook_fail: False +# Decide whether 'ddev start' should be interrupted by a failing hook + +# host_https_port: "59002" +# The host port binding for https can be explicitly specified. It is +# dynamic unless otherwise specified. +# This is not used by most people, most people use the *router* instead +# of the localhost port. + +# host_webserver_port: "59001" +# The host port binding for the ddev-webserver can be explicitly specified. It is +# dynamic unless otherwise specified. +# This is not used by most people, most people use the *router* instead +# of the localhost port. + +# host_db_port: "59002" +# The host port binding for the ddev-dbserver can be explicitly specified. It is dynamic +# unless explicitly specified. + +# phpmyadmin_port: "8036" +# phpmyadmin_https_port: "8037" +# The PHPMyAdmin ports can be changed from the default 8036 and 8037 + +# host_phpmyadmin_port: "8036" +# The phpmyadmin (dba) port is not normally bound on the host at all, instead being routed +# through ddev-router, but it can be specified and bound. + +# mailhog_port: "8025" +# mailhog_https_port: "8026" +# The MailHog ports can be changed from the default 8025 and 8026 + +# host_mailhog_port: "8025" +# The mailhog port is not normally bound on the host at all, instead being routed +# through ddev-router, but it can be bound directly to localhost if specified here. + +# webimage_extra_packages: [php7.4-tidy, php-bcmath] +# Extra Debian packages that are needed in the webimage can be added here + +# dbimage_extra_packages: [telnet,netcat] +# Extra Debian packages that are needed in the dbimage can be added here + +# use_dns_when_possible: true +# If the host has internet access and the domain configured can +# successfully be looked up, DNS will be used for hostname resolution +# instead of editing /etc/hosts +# Defaults to true + +# project_tld: ddev.site +# The top-level domain used for project URLs +# The default "ddev.site" allows DNS lookup via a wildcard +# If you prefer you can change this to "ddev.local" to preserve +# pre-v1.9 behavior. + +# ngrok_args: --basic-auth username:pass1234 +# Provide extra flags to the "ngrok http" command, see +# https://ngrok.com/docs#http or run "ngrok http -h" + +# disable_settings_management: false +# If true, ddev will not create CMS-specific settings files like +# Drupal's settings.php/settings.ddev.php or TYPO3's AdditionalConfiguration.php +# In this case the user must provide all such settings. + +# You can inject environment variables into the web container with: +# web_environment: +# - SOMEENV=somevalue +# - SOMEOTHERENV=someothervalue + +# no_project_mount: false +# (Experimental) If true, ddev will not mount the project into the web container; +# the user is responsible for mounting it manually or via a script. +# This is to enable experimentation with alternate file mounting strategies. +# For advanced users only! + +# bind_all_interfaces: false +# If true, host ports will be bound on all network interfaces, +# not just the localhost interface. This means that ports +# will be available on the local network if the host firewall +# allows it. + +# default_container_timeout: 120 +# The default time that ddev waits for all containers to become ready can be increased from +# the default 120. This helps in importing huge databases, for example. + +#web_extra_exposed_ports: +#- name: nodejs +# container_port: 3000 +# http_port: 2999 +# https_port: 3000 +#- name: something +# container_port: 4000 +# https_port: 4000 +# http_port: 3999 +# Allows a set of extra ports to be exposed via ddev-router +# The port behavior on the ddev-webserver must be arranged separately, for example +# using web_extra_daemons. +# For example, with a web app on port 3000 inside the container, this config would +# expose that web app on https://.ddev.site:9999 and http://.ddev.site:9998 +# web_extra_exposed_ports: +# - container_port: 3000 +# http_port: 9998 +# https_port: 9999 + +#web_extra_daemons: +#- name: "http-1" +# command: "/var/www/html/node_modules/.bin/http-server -p 3000" +# directory: /var/www/html +#- name: "http-2" +# command: "/var/www/html/node_modules/.bin/http-server /var/www/html/sub -p 3000" +# directory: /var/www/html + +# override_config: false +# By default, config.*.yaml files are *merged* into the configuration +# But this means that some things can't be overridden +# For example, if you have 'nfs_mount_enabled: true'' you can't override it with a merge +# and you can't erase existing hooks or all environment variables. +# However, with "override_config: true" in a particular config.*.yaml file, +# 'nfs_mount_enabled: false' can override the existing values, and +# hooks: +# post-start: [] +# or +# web_environment: [] +# or +# additional_hostnames: [] +# can have their intended affect. 'override_config' affects only behavior of the +# config.*.yaml file it exists in. + +# Many ddev commands can be extended to run tasks before or after the +# ddev command is executed, for example "post-start", "post-import-db", +# "pre-composer", "post-composer" +# See https://ddev.readthedocs.io/en/stable/users/extend/custom-commands/ for more +# information on the commands that can be extended and the tasks you can define +# for them. Example: +#hooks: +# post-import-db: +# - exec: drush cr +# - exec: drush updb diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..686c443cec --- /dev/null +++ b/.editorconfig @@ -0,0 +1,17 @@ +# Drupal editor configuration normalization +# @see http://editorconfig.org/ + +# This is the top-most .editorconfig file; do not search in parent directories. +root = true + +# All files. +[*] +end_of_line = LF +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[composer.{json,lock}] +indent_size = 4 diff --git a/.env.example b/.env.example index 4d04ef831b..665ac6e41a 100644 --- a/.env.example +++ b/.env.example @@ -15,13 +15,16 @@ # 'prefix' => '', # 'username' => $_ENV['MYSQL_USER'], # ]; -# -# Uncomment and populate as needed. -# MYSQL_DATABASE= -# MYSQL_HOSTNAME= -# MYSQL_PASSWORD= -# MYSQL_PORT= -# MYSQL_USER= + +# Database settings. +MYSQL_DATABASE='db' +MYSQL_HOSTNAME='db' +MYSQL_PASSWORD='db' +MYSQL_PORT='3306' +MYSQL_USER='db' + +# Hash salt. +HASH_SALT='add rosemary too, bake at 400 deg' # Another common use case is to set Drush's --uri via environment. -# DRUSH_OPTIONS_URI=http://example.com +# DRUSH_OPTIONS_URI=https://example.test diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..a37894e8e4 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,61 @@ +# Drupal git normalization +# @see https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html +# @see https://www.drupal.org/node/1542048 + +# Normally these settings would be done with macro attributes for improved +# readability and easier maintenance. However macros can only be defined at the +# repository root directory. Drupal avoids making any assumptions about where it +# is installed. + +# Define text file attributes. +# - Treat them as text. +# - Ensure no CRLF line-endings, neither on checkout nor on checkin. +# - Detect whitespace errors. +# - Exposed by default in `git diff --color` on the CLI. +# - Validate with `git diff --check`. +# - Deny applying with `git apply --whitespace=error-all`. +# - Fix automatically with `git apply --whitespace=fix`. + +*.config text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.css text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.dist text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.engine text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.html text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=html +*.inc text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.install text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.js text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.json text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.lock text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.map text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.md text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.module text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.php text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.po text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.profile text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.script text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.sh text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.sql text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.svg text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.theme text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.twig text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.txt text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.xml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.yml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 + +# Define binary file attributes. +# - Do not treat them as text. +# - Include binary diff in patches instead of "binary files differ." +*.eot -text diff +*.exe -text diff +*.gif -text diff +*.gz -text diff +*.ico -text diff +*.jpeg -text diff +*.jpg -text diff +*.otf -text diff +*.phar -text diff +*.png -text diff +*.svgz -text diff +*.ttf -text diff +*.woff -text diff +*.woff2 -text diff diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 435662706d..595b6aed5b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,14 +13,14 @@ jobs: strategy: fail-fast: false matrix: - php-versions: ['7.3', '7.4', '8.0'] + php-versions: ['7.4', '8.1'] drupal-release: ['stable'] composer-channel: ['stable'] include: - - php-versions: '8.0' + - php-versions: '8.1' drupal-release: dev composer-channel: stable - - php-versions: '8.0' + - php-versions: '8.1' drupal-release: stable composer-channel: snapshot steps: @@ -41,7 +41,7 @@ jobs: - name: Update composer run: composer --verbose self-update --${{ matrix.composer-channel }} - - name: Dump composer verson + - name: Dump composer version run: composer --version - name: Validate composer.json @@ -51,7 +51,7 @@ jobs: run: composer --verbose install - if: matrix.drupal-release == 'dev' - run: composer --verbose require --no-update drupal/core-recommended:9.2.x-dev && composer --verbose require --no-update --dev drupal/core-dev:9.2.x-dev + run: composer --verbose require --no-update drupal/core-recommended:9.4.x-dev && composer --verbose require --no-update --dev drupal/core-dev:9.4.x-dev - if: matrix.drupal-release == 'dev' run: composer --verbose update @@ -64,10 +64,10 @@ jobs: # https://www.drupal.org/project/drupal/issues/3182653 # https://www.drupal.org/node/3176567 - - if: ${{ matrix.php-versions == '7.4' }} || ${{ matrix.php-versions == '8.0' }} + - if: ${{ matrix.php-versions == '7.4' }} || ${{ matrix.php-versions == '8.1' }} run: composer require phpspec/prophecy-phpunit:^2 - name: Run a single unit test to verfiy the testing setup. - run: ./vendor/bin/phpunit -c ./web/core ./web/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php + run: ./vendor/bin/phpunit -c ./public/core ./public/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php - run: ./vendor/bin/drush diff --git a/.gitignore b/.gitignore index 12ad63d871..6ae1f1a3f7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,25 +1,61 @@ -# Ignore directories generated by Composer +# Ignore directories generated by Composer. /drush/contrib/ /vendor/ -/web/core/ -/web/modules/contrib/ -/web/themes/contrib/ -/web/profiles/contrib/ -/web/libraries/ +/public/core/ +/public/modules/contrib/ +/public/themes/contrib/ +/public/profiles/contrib/ -# Ignore sensitive information -/web/sites/*/settings.php -/web/sites/*/settings.local.php +# Ignore directories generated by NPM/Yarn. +/node_modules/ -# Ignore Drupal's file directory -/web/sites/*/files/ +# Ignore configuration files that may contain sensitive information. +settings.local.php -# Ignore SimpleTest multi-site environment -/web/sites/simpletest +# Ignore development config services. +/public/sites/default/development.services.yml -# Ignore files generated by common IDEs -/.idea/ -/.vscode/ +# User-generated content. +*/sites/*/files +*/sites/*/private -# Ignore .env files as they are personal +# Mounted or symlinked directories. +/private + +# Ignore SimpleTest multi-site environment. +*/sites/simpletest + +# Deployer Build Directory. +/.build/ + +# Ignore .env files as they are personal. /.env + +# Apache and other log folder for the project. +/logs + +# Logs and databases. +*.log +*.sql +*.sqlite + +# OS generated files. +.DS_Store* +ehthumbs.db +Thumbs.db + +# Patch generated files. +*.orig +*.rej +*.bak + +# Tool generated. +.svn +.sass-cache +*.swp + +# IDE files & folders (PHPStorm, Netbeans, etc). +.idea +nbproject +*.project +.vscode diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000000..53d838af21 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +lts/gallium diff --git a/README.md b/README.md index 93c66aea64..38dd86973e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Composer template for Drupal projects +# Composer template for CS Drupal projects [![CI](https://github.com/drupal-composer/drupal-project/actions/workflows/ci.yml/badge.svg?branch=9.x)](https://github.com/drupal-composer/drupal-project/actions/workflows/ci.yml) @@ -16,7 +16,7 @@ for your setup. After that you can create the project: ``` -composer create-project drupal-composer/drupal-project:9.x-dev some-dir --no-interaction +composer create-project ubc-cpsc/drupal-project:9.x-dev some-dir --no-interaction ``` With `composer require ...` you can download new dependencies to your @@ -35,16 +35,17 @@ all files not excluded by the `.gitignore` file. When installing the given `composer.json` some tasks are taken care of: -* Drupal will be installed in the `web`-directory. +* Drupal will be installed in the `public`-directory. * Autoloader is implemented to use the generated composer autoloader in `vendor/autoload.php`, - instead of the one provided by Drupal (`web/vendor/autoload.php`). -* Modules (packages of type `drupal-module`) will be placed in `web/modules/contrib/` -* Theme (packages of type `drupal-theme`) will be placed in `web/themes/contrib/` -* Profiles (packages of type `drupal-profile`) will be placed in `web/profiles/contrib/` + instead of the one provided by Drupal (`public/vendor/autoload.php`). +* Modules (packages of type `drupal-module`) will be placed in `public/modules/contrib/` +* Theme (packages of type `drupal-theme`) will be placed in `public/themes/contrib/` +* Profiles (packages of type `drupal-profile`) will be placed in `public/profiles/contrib/` * Creates default writable versions of `settings.php` and `services.yml`. -* Creates `web/sites/default/files`-directory. +* Creates `public/sites/default/files`-directory. * Latest version of drush is installed locally for use at `vendor/bin/drush`. * Latest version of DrupalConsole is installed locally for use at `vendor/bin/drupal`. +* Latest version of deployer is installed locally for use at `vendor/bin/dep`. * Creates environment variables based on your .env file. See [.env.example](.env.example). ## Updating Drupal Core @@ -62,7 +63,7 @@ Follow the steps below to update your core files. 2. Run `git diff` to determine if any of the scaffolding files have changed. Review the files for any changes and restore any customizations to `.htaccess` or `robots.txt`. -1. Commit everything all together in a single commit, so `web` will remain in +1. Commit everything all together in a single commit, so `public` will remain in sync with the `core` when checking out branches or running `git bisect`. 1. In the event that there are non-trivial conflicts in step 2, you may wish to perform these steps on a branch, and use `git merge` to combine the @@ -82,10 +83,10 @@ workrounds if a project decides to do it anyway](https://getcomposer.org/doc/faq The [Drupal Composer Scaffold](https://github.com/drupal/core-composer-scaffold) plugin can download the scaffold files (like index.php, update.php, …) to the -web/ directory of your project. If you have not customized those files you could -choose to not check them into your version control system (e.g. git). If that is -the case for your project it might be convenient to automatically run the -drupal-scaffold plugin after every install or update of your project. You can +public/ directory of your project. If you have not customized those files you +could choose to not check them into your version control system (e.g. git). If +that is the case for your project it might be convenient to automatically run +the drupal-scaffold plugin after every install or update of your project. You can achieve that by registering `@composer drupal:scaffold` as post-install and post-update command in your composer.json: @@ -108,11 +109,11 @@ If you need to apply patches (depending on the project being modified, a pull request is often a better solution), you can do so with the [composer-patches](https://github.com/cweagans/composer-patches) plugin. -To add a patch to drupal module foobar insert the patches section in the extra -section of composer.json: +To add a patch to drupal module foobar insert the patches section in the +section of composer.patches.json: ```json -"extra": { +{ "patches": { "drupal/foobar": { "Patch description": "URL or local path to patch" @@ -123,7 +124,7 @@ section of composer.json: ### How do I specify a PHP version ? -This project supports PHP 7.3 as minimum version (see [Environment requirements of Drupal 9](https://www.drupal.org/docs/understanding-drupal/how-drupal-9-was-made-and-what-is-included/environment-requirements-of)), however it's possible that a `composer update` will upgrade some package that will then require PHP 7.3+. +This project supports PHP 7.4.9 as minimum version (see [Environment requirements of Drupal 9](https://www.drupal.org/docs/understanding-drupal/how-drupal-9-was-made-and-what-is-included/environment-requirements-of)), however it's possible that a `composer update` will upgrade some package that will then require PHP 7.4+. To prevent this you can add this code to specify the PHP version you want to use in the `config` section of `composer.json`: @@ -131,7 +132,7 @@ To prevent this you can add this code to specify the PHP version you want to use "config": { "sort-packages": true, "platform": { - "php": "7.3.19" + "php": "7.4.9" } }, ``` diff --git a/composer.json b/composer.json index 1e5828add3..be141aaaae 100644 --- a/composer.json +++ b/composer.json @@ -1,14 +1,8 @@ { - "name": "drupal-composer/drupal-project", - "description": "Project template for Drupal 9 projects with Composer", + "name": "ubccs/drupal-project", + "description": "Project template for CS Drupal 9 projects with Composer", "type": "project", "license": "GPL-2.0-or-later", - "authors": [ - { - "name": "", - "role": "" - } - ], "repositories": [ { "type": "composer", @@ -16,33 +10,69 @@ } ], "require": { - "php": ">=7.3", - "composer/installers": "^1.9", - "cweagans/composer-patches": "^1.7", - "drupal/core-composer-scaffold": "^9.1", - "drupal/core-recommended": "^9.1", - "drush/drush": "^10.3", - "vlucas/phpdotenv": "^5.1", - "webflo/drupal-finder": "^1.2" + "php": ">=7.4", + "ext-json": "*", + "composer/installers": "^2.0", + "cweagans/composer-patches": "^1.0", + "drupal/admin_toolbar": "^3.0", + "drupal/backup_migrate": "^5.0", + "drupal/config_split": "^2.0@RC", + "drupal/core-composer-scaffold": "^9.0", + "drupal/core-recommended": "^9.0", + "drupal/core-vendor-hardening": "^9.0", + "drupal/environment_indicator": "^4.0", + "drupal/masquerade": "^2.0@beta", + "drupal/monolog": "^2.0", + "drupal/pathauto": "^1.0", + "drush/drush": "^11.0", + "ubc-web-services/galactus": "^1.0", + "vlucas/phpdotenv": "^5.0" }, "require-dev": { - "drupal/core-dev": "^9.1", - "zaporylie/composer-drupal-optimizations": "^1.2" + "deployer/deployer": "^7.0", + "drupal-composer/drupal-security-advisories": "9.x-dev", + "drupal/coder": "^8.0", + "drupal/core-dev": "^9.0", + "drupal/devel": "^4.0", + "drupal/stage_file_proxy": "^1.0", + "drupal/upgrade_status": "^3.0", + "joachim-n/composer-manifest": "^1.0", + "mglaman/phpstan-drupal": "^1.1", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "roave/security-advisories": "dev-latest", + "squizlabs/php_codesniffer": "^3.0", + "ubc-cpsc/deployer-recipes": "^2.0" }, "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "dev", + "minimum-stability": "stable", "prefer-stable": true, "config": { "discard-changes": true, - "sort-packages": true + "platform": { + "php": "7.4.9" + }, + "sort-packages": true, + "allow-plugins": { + "composer/installers": true, + "cweagans/composer-patches": true, + "dealerdirect/phpcodesniffer-composer-installer": true, + "drupal/core-composer-scaffold": true, + "drupal/core-vendor-hardening": true, + "joachim-n/composer-manifest": true, + "phpstan/extension-installer": true + } }, "autoload": { "classmap": [ "scripts/composer/ScriptHandler.php" ], - "files": ["load.environment.php"] + "files": [ + "load.environment.php" + ] }, "scripts": { "pre-install-cmd": [ @@ -60,23 +90,47 @@ }, "extra": { "drupal-scaffold": { + "gitignore": false, "locations": { - "web-root": "web/" + "web-root": "public/" + }, + "file-mapping": { + "[web-root]/.csslintrc": false, + "[web-root]/.eslintignore": false, + "[web-root]/.eslintrc.json": false, + "[web-root]/.ht.router.php": false, + "[web-root]/INSTALL.txt": false, + "[web-root]/README.txt": false, + "[web-root]/README.md": false, + "[web-root]/example.gitignore": false, + "[web-root]/sites/development.services.yml": false, + "[web-root]/web.config": false } }, "installer-paths": { - "web/core": ["type:drupal-core"], - "web/libraries/{$name}": ["type:drupal-library"], - "web/modules/contrib/{$name}": ["type:drupal-module"], - "web/profiles/contrib/{$name}": ["type:drupal-profile"], - "web/themes/contrib/{$name}": ["type:drupal-theme"], - "drush/Commands/contrib/{$name}": ["type:drupal-drush"] + "public/core": [ + "type:drupal-core" + ], + "public/libraries/{$name}": [ + "type:drupal-library" + ], + "public/modules/contrib/{$name}": [ + "type:drupal-module" + ], + "public/profiles/contrib/{$name}": [ + "type:drupal-profile" + ], + "public/themes/contrib/{$name}": [ + "type:drupal-theme" + ], + "drush/Commands/contrib/{$name}": [ + "type:drupal-drush" + ] }, "composer-exit-on-patch-failure": true, "patchLevel": { "drupal/core": "-p2" }, - "patches": { - } + "patches-file": "composer.patches.json" } } diff --git a/composer.patches.json b/composer.patches.json new file mode 100644 index 0000000000..2316a47750 --- /dev/null +++ b/composer.patches.json @@ -0,0 +1,5 @@ +{ + "patches": { + + } +} \ No newline at end of file