pronovix / drupal-project
适用于使用composer的Drupal 8项目的模板
8.x-dev
2017-11-20 12:31 UTC
Requires
- composer/installers: ^1.2
- cweagans/composer-patches: ^1.6
- drupal-composer/drupal-scaffold: ^2.2
- drupal/admin_toolbar: ^1.19
- drupal/console-core: ^1.0
- drupal/core: ~8.0
- drupal/devel: 1.x-dev
- webflo/drupal-finder: ^1.0.0
- webmozart/path-util: ^2.3
Requires (Dev)
- behat/behat: ^3.3
- behat/mink: ~1.7
- behat/mink-goutte-driver: ~1.2
- behat/mink-selenium2-driver: ^1.3
- drupal/coder: ^8.2
- drupal/drupal-extension: ~3.0
- jcalderonzumba/gastonjs: ~1.0.2
- jcalderonzumba/mink-phantomjs-driver: ~0.3.1
- mikey179/vfsstream: ~1.2
- phpunit/phpunit: >=4.8.28 <5
- squizlabs/php_codesniffer: 2.7.0
- symfony/css-selector: ~2.8
Conflicts
This package is auto-updated.
Last update: 2024-09-07 19:49:30 UTC
README
此模板是drupal-composer的分支,同时包含Drupal VM作为git子模块。
有关这些项目的更多信息,请查看项目页面。
要求
- 在主机机器上安装(最新稳定版)Virtualbox。
- 在主机机器上安装Vagrant及其一些插件
vagrant plugin install vagrant-hostsupdater
vagrant plugin install vagrant-auto_network
vagrant plugin install vagrant-vbguest
vagrant plugin install vagrant-cachier
注意事项
- Composer会安装以下文件(这些文件不应该被提交)
- Drupal核心(最新稳定版drupal-8.x.x)位于
docroot/
文件夹中 - Drupal库和贡献模块/profiles/themes位于
docroot/
文件夹中 - PHP库位于
vendor/
文件夹中 - PHP库的二进制文件位于
bin/
文件夹中
- Drupal核心(最新稳定版drupal-8.x.x)位于
- 由于gitroot将被NFS挂载到VM中,对其中文件的任何更改都将在此处可用。
- 您可以使用XDebug。
- 您可以使用
vagrant ssh
连接到正在运行的Vagrant机器。 - 您可以在
./config/config.yml
文件的npm_package_json_paths
变量中指定package.json
文件的路径,以在设置时安装node.js包。 - 您可以通过在
./config/config.yml
中指定browsersync_port
和browsersync_config_target
变量,轻松在VM中启用Browsersync。如果您想全局使用它,只需将其添加到全局安装的Node.js包中。如果您想通过Gulp(或Grunt)使用它,您可以从生成的browsersync.config.json
文件中包含必要的设置到gulpfile.js
中。在浏览器中访问vagrant_hostname
:browsersync_port
(例如http://pxproject.test:8080)以访问Browsersync服务器。
处理现有项目
- 克隆项目
git clone some-project --recursive
(需要使用--recursive
开关以克隆Drupal VM)。 - 启动VM:
vagrant up
- 对于添加自定义/贡献模块或补丁,请遵循以下说明。
创建新项目
- 克隆此存储库:
git clone https://github.com/Pronovix/drupal-project.git . --recursive
- 根据您的项目更新
/config/config.yml
中的vagrant_hostname
和vagrant_machine_name
(这两个必须在您的主机上唯一) - 启动VM:
vagrant up
- 由于第一次在主机上执行需要下载大约700MB(或更多)的基础镜像,因此这需要相当长的时间。之后,设置(新的)VM通常只需要5-15分钟,具体取决于其配置(要安装的包的数量、Drupal模块的数量、composer与带宽等)。
- 对于添加自定义/贡献模块或补丁,请遵循以下说明。
注意
- 默认情况下,
.htaccess
和robots.txt
文件由drupal-scaffold
忽略(因此它们会被更新而不是被覆盖),并且它们被提交到存储库以确保它们存在于文件系统中。 - 支架文件(除了
.htaccess
和robots.txt
之外)和其他不应提交到Drupal项目中的文件(例如settings.php)默认位于.gitignore
文件中。
添加新的贡献模块
- 使用
vagrant ssh
连接到机器 - 在VM中运行
composer require drupal/some_module --no-interaction --prefer-dist -o
- 将
some_module
模块添加到docroot/modules/contrib/
目录下(根据pronovix/drupal-project的composer.json
文件) - 将此模块依赖的 contrib 模块添加到同一目录下(根据
some_module.info.yml
文件) - 将此模块依赖的 PHP 库添加到
vendor/
目录下(根据模块自身的composer.json
文件) - 自动加载器将被优化(因为使用了
-o
选项)
- 将 Composer 文件添加到 git 中:
git add composer.json composer.lock
- 请不要添加代码本身,因为它应该由 Composer 自动构建
- Pronovix/drupal-project不应该包含composer.lock,因为它是为其他/真实项目准备的骨架
- 其他/真实项目必须提交composer.lock,因为这是确保在任何环境中构建相同的代码库的唯一方法
- 提交这些文件:
git commit -m "提交信息."
添加 contrib 子模块(不要这样做)
如果您不知道在drupal.org上提供您想要的特定(子)模块的项目机器名?没问题,drupal.org的Composer仓库可以为您解决
- 在虚拟机中:
composer require drupal/admin_toolbar_tools --no-interaction --prefer-dist -o
- 然而,这种方法不建议使用,因为子模块是添加到composer.json中的,而不是drupal.org项目,这可能会造成混淆。上面的命令将显示类似“安装drupal/admin_toolbar (1.19.0)”的信息,这是drupal.org项目的机器名 - 我们就坚持这个吧。
git reset --hard
composer require drupal/admin_toolbar --no-interaction --prefer-dist -o
- 嗯,该模块已经是基础包的一部分了,但无论如何 :)
git add composer.json composer.lock
git commit -m "添加新的 contrib 模块:admin_toolbar.module."
添加新的自定义模块
- 将其复制到
docroot/modules/custom/
目录中。 - 确保其composer.json具有适当的类型信息:
"type": "drupal-custom-module"
- 将模块添加到 git 中:
git add modules/custom/custom_module
(自定义模块应该提交到仓库) - 提交模块:
git commit -m "添加新的自定义模块:custom_module."
应用核心或任何 contrib 模块的补丁
- 在您的composer.json中的
extra
部分添加一个patches
部分(如果尚未添加),为每个您想要修补的项目;每个 Drupal 项目应有一个独立的部分,每个补丁应有一行(在项目部分内)。所以您的composer.json最后看起来像这样
"extra": {
"installer-paths": {
"docroot/core": ["type:drupal-core"],
"docroot/libraries/{$name}": ["type:drupal-library"],
"docroot/modules/contrib/{$name}": ["type:drupal-module"],
"docroot/profiles/contrib/{$name}": ["type:drupal-profile"],
"docroot/themes/contrib/{$name}": ["type:drupal-theme"],
"drush/contrib/{$name}": ["type:drupal-drush"]
},
"patches": {
"drupal/core": {
"Use ROW_FORMAT=dynamic with InnoDB [#2857359]": "https://www.drupal.org/files/issues/row_format_dynamic_innodb_0.patch"
},
"drupal/node_clone": {
"Configurations cannot be changed and publishing options missing [#2724919]": "https://www.drupal.org/files/issues/fix_set_data_on_admin_page-2724919-2.patch",
"Warning: Invalid argument supplied for foreach() [#2712079]": "https://www.drupal.org/files/issues/update_settings_and_schema-2712079-3.patch"
}
}
}
- 在虚拟机中运行
composer install
以应用补丁。
编写测试
将您的测试放入features目录。然后运行vagrant ssh
和cd .. && bin/behat
。如果您需要特别准备好的数据库来运行测试,请将转储文件复制到docroot/mock.sql
。
致谢
这基本上是Proudly Found Elsewhere
- drupal-composer/drupal-project(我们自己的pronovix/drupal-project是它的分支)
- Drupal VM(它已添加到我们自己的仓库作为git子模块)
- Composer howto on drupal.org
- 等等。