在本地开发 Drupal 8 网站,你需要做点特别的设置,比如不让 Drupal 合并网站使用的 CSS 与 JS 文件,禁用掉 Drupal 的缓存等等。不然你修改了某个地方想看到修改之后的结果,每次都得先去重建一下 Drupal 的缓存。
本地配置文件
为本地开发环境准备一个特别的配置文件,这个配置文件只在本地开发环境上存在,也就是你不需要把这个配置文件放到项目仓库里做版本控制。在这个本地配置文件里,去做一些特别的配置,这样这些配置就只会存在于本地开发环境上。
Drupal 默认的配置文件叫 settings.php,它会在网站目录的下面,比如 sites/default/settings.php,打开这个配置文件,然后查看下面这段代码:
# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { # include $app_root . '/' . $site_path . '/settings.local.php'; # }
去掉代码前面的注释符号,让它生效:
if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { include $app_root . '/' . $site_path . '/settings.local.php'; }
意思就是,如果网站目录下面的存在 settings.local.php 文件,就把它载入进来。这个文件 Drupal 已经准备好了一个参考示例,位置是在 sites/example.settings.local.php,复制一份这个文件,把它放在 sites/default/settings.local.php。
打开我们新复制的文件:sites/default/settings.local.php,在这个文件里做的配置只会影响到本地开发环境,因为这个文件不会存在于网站的生产环境,你需要在项目的版本控制里去掉这个文件。
下面是这个本地的配置文件里包含的配置,比如:
/** * Disable CSS and JS aggregation. */ $config['system.performance']['css']['preprocess'] = FALSE; $config['system.performance']['js']['preprocess'] = FALSE;
上面的配置已经存在于 settings.local.php 文件里了,功能就是关掉网站的合并 CSS 与 JS 的功能。
还有几处缓存的设置,可以取消配置代码的注释,让这些配置生效:
$settings['cache']['bins']['render'] = 'cache.backend.null'; $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';
意思就是不使用缓存。
本地开发服务
再查看一下settings.local.php 里的这行配置代码:
/** * Enable local development services. */ $settings['container_yamls'][] = DRUPAL_ROOT . '/sites/development.services.yml';
上面是设置了本地开发服务,我们可以修改一下文件的名字:
/** * Enable local development services. */ $settings['container_yamls'][] = DRUPAL_ROOT . '/sites/local.services.yml';
复制一份 sites/development.services.yml,放在 sites/local.services.yml,这样做的原因是,Drupal 原本的 sites/development.services.yml 文件在升级 Drupal 核心以后可能会被覆盖掉。
打开 sites/local.services.yml,用下面内容替换掉文件里的内容:
parameters: http.response.debug_cacheability_headers: true twig.config: debug: true cache: false services: cache.backend.null: class: Drupal\Core\Cache\NullBackendFactory
注意 twig.config,我们把 debug 设置成了 true,意思就是打开 twig 的调试功能,把 cache 设置成了 false,意思就是去掉 twig 的缓存功能。这样你在用浏览器审查 Drupal 页面元素的时候,会看到输出的内容是由哪个 twig 模板文件控制的,还会显示建议使用的模板文件的名字是什么。
Drupal