teamdeeson / d8-quickstart
Drupal 8项目的快速启动模板。
Requires
- composer/installers: ~1.5.0
- cweagans/composer-patches: 1.x-dev
- drupal-composer/drupal-scaffold: ^2.5
- drupal/components: ^1.0
- drupal/config_filter: ^1.4
- drupal/config_split: ^1.4
- drupal/console: ~1.0
- drupal/core: 8.6.16
- drupal/datalayer: 1.x-dev
- drupal/devel: ^2.0
- drupal/drupal-extension: ^3.2
- drupal/entity: ^1.0@alpha
- drupal/google_analytics: ^2.1
- drupal/masquerade: ^2.0@beta
- drupal/metatag: ^1.0@beta
- drupal/pathauto: ^1.0@beta
- drupal/redirect: ^1.0@alpha
- drupal/redis: ^1.0@alpha
- drupal/reroute_email: ^1.0@beta
- drupal/shield: ^1.0
- drupal/stage_file_proxy: ^1.0
- drupal/warden: ^1.0
- drush/drush: ^9.5
- webflo/drupal-core-strict: 8.6.16
- zendframework/zend-feed: ~2.7.0
Requires (Dev)
- behat/mink: ~1.7
- behat/mink-goutte-driver: ~1.2
- drupal/coder: ^8.2
- jcalderonzumba/gastonjs: ~1.0.2
- jcalderonzumba/mink-phantomjs-driver: ~0.3.1
- mikey179/vfsstream: ~1.2
- phpunit/phpunit: ^6.5
- symfony/css-selector: ~2.8
Conflicts
- dev-master
- dev-dependabot/npm_and_yarn/src/frontend/json5-1.0.2
- dev-dependabot/npm_and_yarn/src/frontend/express-4.18.2
- dev-dependabot/npm_and_yarn/src/frontend/decode-uri-component-0.2.2
- dev-dependabot/npm_and_yarn/src/frontend/loader-utils-1.4.2
- dev-dependabot/composer/src/frontend/twig/twig-2.15.3
- dev-dependabot/npm_and_yarn/src/frontend/terser-4.8.1
- dev-dependabot/npm_and_yarn/src/frontend/moment-2.29.4
- dev-dependabot/npm_and_yarn/src/frontend/eventsource-1.1.1
- dev-dependabot/npm_and_yarn/src/frontend/url-parse-1.5.10
- dev-dependabot/npm_and_yarn/src/frontend/follow-redirects-1.14.8
- dev-dependabot/npm_and_yarn/src/frontend/ajv-6.12.6
- dev-dependabot/npm_and_yarn/src/frontend/tar-4.4.19
- dev-dependabot/npm_and_yarn/src/frontend/path-parse-1.0.7
- dev-dependabot/npm_and_yarn/src/frontend/dns-packet-1.3.4
- dev-dependabot/npm_and_yarn/src/frontend/browserslist-4.16.6
- dev-dependabot/npm_and_yarn/src/frontend/hosted-git-info-2.8.9
- dev-dependabot/npm_and_yarn/src/frontend/lodash-4.17.21
- dev-dependabot/npm_and_yarn/src/frontend/ssri-6.0.2
- dev-dependabot/npm_and_yarn/src/frontend/elliptic-6.5.4
- dev-dependabot/npm_and_yarn/src/frontend/ini-1.3.8
- dev-dependabot/npm_and_yarn/src/frontend/http-proxy-1.18.1
- dev-dependabot/npm_and_yarn/src/frontend/websocket-extensions-0.1.4
- dev-feature/2020-standards
- dev-dependabot/npm_and_yarn/src/frontend/mixin-deep-1.3.2
- dev-dependabot/npm_and_yarn/src/frontend/eslint-utils-1.4.3
- dev-dependabot/npm_and_yarn/src/frontend/lodash.template-4.5.0
- dev-dependabot/npm_and_yarn/src/frontend/acorn-6.4.1
- dev-feature/bootstrap-coding-standard-fix
- dev-feature/bootstrap-stage-in-pipelines
- dev-feature/split-webpack
- dev-feature/update-readme-db-import-cmd
- dev-feature/add-datalayer-module
- dev-feature/support-multiple-environments
- dev-feature/deeson-admin-theme
- dev-site-wont-run-internal-error
- dev-feature/drush-wrapper-bash
- dev-drush-wrapper-update
- dev-feature/fe-starter-integrate
- dev-feature/drush-aliases
- dev-feature/build-in-container
- dev-feature/require-componentised-frontend
- dev-feature/drush-wrapper
- dev-feature/readme-update
- dev-feature/update-hostnames
- dev-update-hostnames
- dev-feature/remove-docker-sync
- dev-feature/acquia-environment-fix
- dev-feature/docker-tweaks
- dev-feature/update-container-versions
- dev-feauture/34-update-container-versions
- dev-feature/ssl-support
- dev-feature/sort-php-packages
- dev-task/uninstall-excess-modules
- dev-feature/behat-pipelines
- dev-extract-codestandard-tests-into-script
- dev-feature/test-automation-pipelines
- dev-make-phpunit.xml-match-drupal
- dev-feature/ensure-make-install-works
- dev-feature/implement-automated-testing
This package is auto-updated.
Last update: 2024-09-04 18:32:11 UTC
README
管理Drupal 8站点首选的方式是使用composer,Drupal Composer项目有助于将Drupal核心与composer集成。
此存储库围绕Drupal Composer提供快速启动包装,包括Deeson Drupal 8项目的常用配置和推荐模块。
快速启动项目使用composer进行依赖管理,包括Drupal核心、贡献库和第三方库。在开发过程中,docroot/的内容应被视为可替换的,可以重新编译存储库中的内容。
我们使用Docker和Docker compose来管理本地开发,并且此存储库包含一些默认配置,用于与Docker一起工作。当然,您也可以使用替代方案,但可能需要额外的配置。
为了使drush与Docker一起工作,您需要将以下行添加到您的/etc/hosts
文件中:127.0.0.1 docker.local
创建新的Drupal站点
您不需要克隆此存储库,我们的快速启动是使用composer检查出来的。
首先您需要安装composer。
然后您可以使用composer创建一个新的项目,项目名称应简短且不含标点符号(例如:myproject)
composer create-project teamdeeson/d8-quickstart <project-name> --stability dev --no-interaction
现在您应该创建一个新的git仓库,并提交所有不由.gitignore文件排除的文件。
git init git add . git commit -m "Created the project."
所需配置
您应该检查所有服务和设置文件,并根据需要做出任何修改。以下至少需要做出以下修改
.env:
在此处添加您的项目名称,使用与composer相同的名称(例如:myproject)
src/settings/environment.inc:
配置您的域名
src/settings/01-core.settings.inc:
配置哈希盐。
src/settings/02-shield.settings.inc:
配置基本认证访问详情,以保护您的开发站点。
构建和安装
在Deeson,我们使用Makefile来编排任何额外的任务,例如构建依赖关系和运行测试。
这确保了我们有一个通用的机制,用于在所有项目中运行任务。
可以使用包含的Makefile构建项目。
make
将基于假设的环境构建项目。这将创建docroot/
文件夹并构建您的网站。
您可以使用ENVIRONMENT变量显式指定环境,这将添加或删除开发依赖项
make build ENVIRONMENT=dev
make build ENVIRONMENT=prod
您也可以在需要时安全地删除您的docroot
make clean
首次运行构建后,您可以使用以下命令设置和运行Docker环境。
make start
现在您应该有多个正在运行的Docker容器,包括nginx、php、mariadb。运行以下命令来检查。
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
01b7db232917 wodby/drupal-nginx:8-1.13-2.4.2 "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 80/tcp d8-quickstart_nginx
b463d169feeb deeson/fe-node "bash -c 'yarn insta…" 3 minutes ago Up 3 minutes d8-quickstart_fe-node
f487f9c5ae93 wodby/drupal-php:7.1-2.4.3 "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 9000/tcp d8-quickstart_php
fd56e451e51d wodby/mariadb:10.1-2.3.3 "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 3306/tcp d8-quickstart_mariadb
53d6dcb35ee1 mailhog/mailhog "MailHog" 3 minutes ago Up 3 minutes 1025/tcp, 8025/tcp d8-quickstart_mailhog
fb0ebe6aae0e wodby/redis:3.2-2.1.0 "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 6379/tcp d8-quickstart_redis
834f7edc1c46 wodby/drupal-solr:8-6.4-2.0.0 "docker-entrypoint-s…" 3 minutes ago Up 3 minutes 8983/tcp d8-quickstart_solr
c18f97249a71 deeson/fe-php "docker-php-entrypoi…" 3 minutes ago Up 3 minutes d8-quickstart_fe-php
2ffcf9dcf72d traefik:1.6.6-alpine "/entrypoint.sh --do…" 23 hours ago Up 20 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp traefik
输出应包含如下一行
2ffcf9dcf72d traefik:1.6.6-alpine "/entrypoint.sh --do…" 21 hours ago Up 18 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp traefik
这是docker-proxy容器。您必须运行它才能在浏览器中查看网站。有关设置说明,请参阅依赖项部分。
cd docker-proxy
make start
您现在应该能够在谷歌浏览器中访问一个纯 Drupal 网站,网址为 https://d8-quickstart.localhost。由于 Chrome 会抱怨 SSL 证书未签名,您需要添加一个安全例外。
如果您想使用其他浏览器,您必须将条目添加到您的 /etc/hosts
文件。
127.0.0.1 d8-quickstart.localhost
您现在可以运行 Drupal 安装,无论是通过界面还是使用命令行。
make install
将会安装网站及其相关配置。您将被提示进行网站安装的选项。如果您继续,这将删除您的现有网站数据库。
您可以使用以下命令在任何时候停止 Docker 环境。
make stop
您的网站文件和数据库将存储在 Docker 外的 .persist
隐藏目录中。
使用 Composer 管理依赖项
您应该通过 Composer 管理所有依赖项。这包括任何现成的代码,例如 Drupal 核心、贡献模块和主题以及任何第三方库。
要添加模块(例如,重定向)
composer require drupal/redirect
要更新模块(例如,重定向)
composer update drupal/redirect
要更新 Drupal 核心
composer update drupal/core --with-dependencies
您应该将 composer.lock 文件提交到存储库,这将保证任何后续构建都将使用所有依赖项的确切版本。
有关详细信息,请参阅 Drupal Composer 项目文档
https://github.com/drupal-composer/drupal-project#composer-template-for-drupal-projects
Composer 项目使用指南
https://getcomposer.org.cn/doc/01-basic-usage.md
Xdebug
在 Xdebug 连接工作之前,您需要运行 sudo ifconfig lo0 alias 10.254.254.254
。这通常在您登录到开发机器时需要,但定期运行是安全的。
运行测试
此存储库包含运行 Behat 和 PHPUnit 测试套件的起点,以及使用 PHPCS 运行 Drupal 编码标准检查。
PHPUnit 测试应在您自定义模块的 tests/ 子目录中定义。
Behat 测试应在项目根目录的 behat-tests 目录中定义。
make test
将运行项目的所有自动化测试。
项目结构
behat-tests/
这包含您项目的所有 Behat 测试。
config/
这包含 Drupal 的 CMI 配置文件。
docroot/
此目录包含编译内容,通常不应提交到您的存储库。
drush/
这包含您的 drush 网站别名文件。
src/
这包含您的所有项目源代码。如下所示
src/frontend/
适用于所有前端需求。这使用我们的前端设置,您可以在以下位置找到更多信息:https://github.com/teamdeeson/deeson-webpack-config
src/modules/
这是您放置自定义模块的地方。
在 src/modules/
中的任何内容都将可用在 docroot/modules/custom/
。
src/services/
您可以在这里定义您的服务 YAML 文件。
src/settings/
这包含 Drupal 网站设置,从 settings.php 中提取,如下:http://handbook.deeson.co.uk/development/drupal8/#settings-file-configuration
这已从博客文章中提到的 sites/default/settings/ 或 sites/conf/ 中移除。
settings.php 将在 docroot/sites/default/
中提供。所有其他文件都将通过 settings.php 在原地包含。
src/themes/
这是您放置自定义主题的地方。
在 src/themes/
中的任何内容都将可用在 docroot/themes/custom/
。
src/themes/deeson_frontend_framework
Drupal 与 src/frontend 之间的默认连接。您的主题可以继承自这个连接,或者遵循https://github.com/teamdeeson/deeson-webpack-config中的说明自行操作(这并不复杂)。
scripts/
这个文件夹用于存放您可能希望添加的任何编译或部署脚本。
这些脚本需要以常规方式包含在您的设置文件中。
$settings['container_yamls'][] = dirname(DRUPAL_ROOT) . '/src/services/development.services.yml';
vendor/
这是 composer 供应商目录,包含项目依赖、工具和库。这个目录应从您的仓库中排除。
web/
这个目录和 docroot/
目录被符号链接到同一位置,以提高兼容性,也应从您的仓库中排除。
有用的 Docker 命令
您可以使用 docker-compose 工具作为常用 Docker 命令的快捷方式。要在某个容器中运行命令,可以使用
docker-compose exec <container-name> <command>
例如,要在一个数据库容器(mariadb)中启动 mysql 客户端,请运行
docker-compose exec mariadb mysql
您也可以使用更标准的 Docker 命令。
要列出活跃的 Docker 实例,在项目根目录中运行以下命令
docker-compose ps
要获取 PHP 容器内的 bash 终端,可以使用以下命令
docker-compose exec php
要将导出的站点数据库导入到数据库容器中(如果您没有安装 pv,可以使用 brew install pv
来安装),请运行以下命令
pv database_export_filename.sql | docker-compose exec -T mariadb mysql -udrupal -pdrupal drupal
请注意,此方法比 drush 方法快 33%,drush 方法为 pv database_export_filename.sql | drush @docker sql-cli
依赖项
我们的 Docker 代理应该已安装并运行。有关安装说明,请参阅此处:https://bitbucket.org/deesongroup6346/d4d-traefik-proxy
已知问题
错误:网络代理声明为外部代理,但找不到。请手动使用 'docker network create proxy' 创建网络并重试。
Docker 代理需要运行。请参阅上述依赖项。
管理配置
D8 快速入门使用 Config Split 将本地开发配置与默认配置分离。
导出配置
默认配置将由 drush @docker cex
导出至 ./config/default
。
当运行 drush @docker cex
时,本地开发配置将自动导出到 ./config/local
。
您可以在 Drupal 8 管理区域中控制被认为本地配置的内容。
导入配置
您可以使用 drush @docker cim
导入站点配置。
默认配置总是会被导入。
如果环境是本地开发环境,则也会导入本地配置。
使用 Drush 与 Acquia
当与 Drush 和 Acquia 远程主机一起工作时,您可能需要在 ~/.ssh/config 中添加以下内容
Host *.acquia-sites.com
LogLevel QUIET