lakedrops/theme-d8-sass

Drupal 8 的 Composer 插件,用于使用基于 Gulp 的 SASS 编译器创建新的主题

v1.6.3 2021-01-21 10:34 UTC

README

这是一个适用于 SASS、Bower、Gulp 和您想使用的任何 Drupal 8 基础主题的 Drupal 8 主题模板。此模板还内置了自更新功能,您在未来为 Drupal 项目设置自定义主题时,无需复制/粘贴任何内容。

用法

基本安装

默认情况下,此模板使用 Bartik 作为基础主题,您可以通过在现有 Drupal 项目中调用以下命令开始使用它:

composer require lakedrops/theme-d8-sass

这将在此模板作为依赖项添加到您的 composer.json 文件中,并创建一个名为 mytheme 的自定义主题,包含所有必要的设置,以便立即开始。

高级安装

定义主题名称

要定义特定的主题名称,您只需将以下部分添加到您的 '.lakedrops.yml' 中

theme-d8-sass:
  project_name: NAME_YOUR_THEME

在实际安装主题之前将此配置添加到 composer.json 中是最佳实践,否则您将最终得到两个自定义主题,一个具有默认名称,另一个具有您自己的主题名称。

定义和配置基础主题

要使用 Bartik 之外的其他基础主题,您可以将以下配置添加到您的 composer.json 中

theme-d8-sass:
  base_theme:
    name: bootstrap
    package: drupal/bootstrap
    starterkit: starterkits/sass
    sasspath: scss
    import:
      - overrides
默认描述
namebartik基础主题的 Drupal 项目名称。
package带有命名空间和包名称的 composer 包名称,以便 Composer 能够在当前安装中找到该包以获取额外的资源,如 starterkit。如果您想使用以下设置之一,则必须确保此包包含在您的项目需求中。
starterkit如果基础主题包含 starterkit,则可以指定在该项目中找到它的相对路径。
sasspath创建的自定义主题始终基于名为 sass 的子目录,其中包含所有 SASS 或 SCSS 代码。如果基础主题的 starterkit 使用不同的目录名称,则在此处指定,以便我们可以从正确的位置将文件复制到我们的 sass 目录。
import[]如果 starterkit 包含您应该导入的基本文件,则可以提供要自动导入的名称列表。

注意:如果您使用 Bootstrap 作为基础主题,您还必须添加 Bootstrap 库的 bower 资产,具体说明如下。其他基础主题可能也适用,您应该在其自己的文档中查找其要求。请随时通知我们有关其他基础主题的配置,我们将将其添加到此处文档中。

添加 bower 资产

基础主题或您自己的主题开发样式可能需要一些由 Bower 提供的库。要将一个或多个 Bower 资产添加到您的主题中,只需将类似以下部分添加到您的 composer.json 中

theme-d8-sass:
  bower_assets:
    bootstrap-sass:
      name: bootstrap
      version: "~3.3.7"
      fonts:
        src: assets/fonts/bootstrap
      sass:
        src: assets/stylesheets
        import:
          - bootstrap
      js:
        src: assets/javascripts

在上面的示例中,bootstrap-sass 来自 bower 包存储库的包名称,并包含一个包含以下选项的值字典

描述
name用于在您自己的主题中识别此资产的名字。
version此值是可选的,如果未提供,则默认为 latest。注意:如果您使用全局 bower 资产(见下文),则忽略此值。
fonts包含要查找该包字体源目录的字典。这些字体将被复制到您的自定义主题中。
scss包含要查找该包 scss 文件源目录的字典以及当需要时 Sass 编译器将导入的 scss 文件列表。这些 scss 文件不会被复制到您的自定义主题中,因为它们仅用于编译,而不会将这些文件发送到网站访客的浏览器。
js包含要查找该包 JavaScript 文件源目录的字典。这些 JavaScript 文件将被复制到您的自定义主题中,并在需要时包含到向网站添加它们的库中。

当执行 composer 时,会动态创建 bower.json 文件,并自动执行 bower 以在您的主题中本地安装和更新所有所需的资源。

全局添加 bower 资源

上一章介绍了如何将 bower 资源添加到您的自定义主题,并且无需做任何其他事情,它们将使用 bower 安装和更新后本地添加到您的主题中。

如果您想避免使用 Bower 的开销,或者这些资源将被多个项目使用,那么您可以将它们全局安装到 Drupal 项目的 vendor 目录中。这可以通过在 composer.json 中添加以下设置来实现,除了上一章中的设置

{
  "repositories": [
    {
      "type": "composer",
      "url": "https://asset-packagist.org"
    }
  ],
  "require": {
    "bower-asset/bootstrap-sass": "~3.3.7"
  }
}

您的自定义主题将直接使用 vendor 目录中的资源,而不是将它们保留在主题的 bower_components 子目录中。但是,您仍然需要如上所述在额外部分中保留 bower_assets 设置。

其他 Bower 资源

一个可能添加到主题中的 bower 资源简短列表

Flat-UI
{
  "require": {
    "bower-asset/flat-ui-sass": "~2.1.3"
  }
}
theme-d8-sass:
  bower_assets:
    flat-ui-sass:
      name: flat-ui
      fonts:
        src: vendor/assets/fonts.flat-ui
      sass:
        src: vendor/assets/stylesheets
        import:
          - flat-ui
      js:
        src: vendor/assets/javascripts
FontAwesome
{
  "require": {
    "bower-asset/fontawesome": "~4.7.0"
  }
}
theme-d8-sass:
  bower_assets:
    fontawesome:
      name: fontawesome
      fonts:
        src: fonts
      sass:
        src: scss
        import:
          - font-awesome
Animate
{
  "require": {
    "bower-asset/animate-sass": "~0.6.0"
  }
}
theme-d8-sass:
  bower_assets:
    animate-sass:
      name: animate
      sass:
        src: ''
        import:
          - animate
        modules:
          - bounceIn

对于 animate 包,还有一个名为 modules 的附加列表,其中包含您想要为自定义主题启用的动画模块列表。

添加可选脚本

每次您在项目中运行 composer installcomposer update 时,自定义主题都会更新。然而,有时您可能只想更新主题而无需在完整项目中运行 composer,您可以通过向 composer.json 文件中添加一些自定义脚本来实现这一点

{
  "scripts": {
    "drupal-theme-install": "LakeDrops\\Drupal8Theme\\SASS\\Plugin::init",
    "drupal-theme-update": "LakeDrops\\Drupal8Theme\\SASS\\Plugin::update",
    "drupal-theme-reset": "LakeDrops\\Drupal8Theme\\SASS\\Plugin::reset",
    "drupal-theme-overwrite": "LakeDrops\\Drupal8Theme\\SASS\\Plugin::overwrite"
  }
}

您不需要全部都添加,只需添加那些对您的开发工作流程有意义的即可。要运行这些脚本中的任何一个,只需调用 composer drupal-theme-update,然后它会运行那个脚本。

此包中可用的脚本有

名称用途
init创建或更新主题及其所有文件和设置。不要覆盖任何自定义文件,最后在需要时运行 npm 和/或 bower
updateinit 相同,只是 npm 和 bower 会在更新模式下调用,而不是安装模式下。
resetinit 相同,但在之前会重置,这将删除之前安装的 bower 资源中的字体和 JavaScript 文件。
overwriteinit 相同,但它还会覆盖自定义文件。

更新

只需在项目根目录中调用 composer update,此插件的最新版本将被更新,然后更改的文件将更新到您的自定义主题中。不用担心,您在主题中编辑的文件以及不是此插件核心的文件,将不会被覆盖,因此您可以轻松地保留自己的工作。

更新结束后,将执行 gulp default,这将更新您的字体、JavaScript 文件并将 Sass 文件编译成 CSS。这对于部署 Drupal 站点很有用,可以确保主题资源始终保持最新。

Sass 编译器还知道开发和生产模式。默认情况下使用开发模式,当使用带有 --no-dev 命令行参数的 composer 运行时,将使用生产模式,这在生产环境中通常是情况。

使用 Gulp

转到您的主题目录并调用一次 gulp 以运行所有可用的预处理器。这相当于调用 gulp default

如果 Gulp 没有全局安装,那么您需要在本章的所有示例中调用 node_modules/.bin/gulp

Gulp 默认将运行 fontsjscss 任务,这些任务将在下面详细介绍。

Gulp 任务

字体

gulp fonts 将从所有配置的 bower 资源中复制所有字体到您自定义主题的字体子目录。

JavaScript

gulp js 将从所有配置的 bower 资源中复制所有 JavaScript 文件到您自定义主题的 js 子目录。

CSS

gulp css 一次将您的 Sass 文件编译成 CSS。当添加参数 --env production 时,输出将针对生产环境进行优化,否则输出将针对开发进行优化。

gulp watch 将启动一个进程,监视您的 Sass 目录,并在一个或多个文件更改时自动调用 CSS 编译。

示例

此模板嵌入在我们的 D8 项目模板 中,查看 composer.json 将显示所有选项的实际操作。