ronilaukkarinen/dudestack

现代WordPress栈

安装: 1,107

依赖项: 0

建议者: 0

安全: 0

星标: 102

关注者: 8

分支: 13

开放问题: 1

语言:Shell

类型:项目

2.4.8 2024-06-25 14:53 UTC

README

Packagist Build Status

Dudestack是一个现代WordPress工具包,可以帮助你开始使用最佳的开发工具和项目结构——就像Bedrock

想法是只需一个命令就可以启动项目。DRY(不要重复自己)的东西完全自动化,可以轻松地在每个项目启动时节省数十个小时!

设置完成后,您只需运行以下命令即可开始新项目:

createproject

TL;DR:您可以通过遵循我们的Air起始主题说明在两分钟内立即测试dudestack。

请注意:dudestack的主要重点是它对我们公司和员工的工作方式。这意味着如果没有调整,它可能不适合您。如果您遇到问题,请通过问题提问。

文档与指南

  • 查看Wiki
  • 目前我们只有综合性的英文教程和针对Windows (WSL)的教程。

目录

  1. 背景
  2. 它与什么不同,为什么我应该使用这个?
  3. 特性
  4. 要求
  5. 安装
  6. 文档
    1. 使用createproject bash脚本来创建新项目
    2. createproject.sh的作用
    3. 您可能需要在每个项目中编辑的内容
    4. 入门
    5. 付费或高级插件
      1. Advanced Custom Fields Pro
      2. Object Cache Pro
      3. Polylang Pro
      4. Relevanssi
    6. WP-CLI别名
    7. SEO插件
    8. 问题

背景

我们一直在发展我们的开发流程。老实说,我们看过数百篇文章、工具和脚本。我们长期使用常规WordPress结构、不同的wp-configs和Dandelion,但最终意识到在某些时候我们必须找到其中的规律。设置事情不应该是在新项目启动时最耗时的任务。

我们喜欢Bedrock,这是一个现代WordPress栈,可以帮助您开始使用最佳的开发工具和项目结构。Bedrock包含了我们之前一直在使用的工具,但更多。实际上,我们自豪地说,这个栈的大部分都是基于Bedrock的。

像bedrock一样,dudestack在开始新项目时可以节省您数小时。

它与什么不同,为什么我应该使用这个?

好吧,这主要是为芬兰本地WordPress公司Digitoimisto Dude Oy的网页设计/开发机构和备份目的以及展示我们如何工作而创建的工具箱。您应该只在使用方式上真的喜欢我们时才使用它。

尽管我们非常喜欢Bedrock,但我们注意到也有一些我们不喜欢的方面。

  • 原来的内容默认放在 app/ 目录下,后来放在 web/ 目录。我们更喜欢使用 content/,就像 WordPress 的 wp-content 目录一样,原因在于它描述得更清楚。我们不想让它过于编程化,而是希望它更符合前端开发者的需求(用于开发 WordPress 主题和功能)。
  • Composer 修改,用于安装更多包,例如芬兰语语言包等,这些并非 Bedrock 的原始部分。
  • 自动化。我指的是 composer 的 create-project 功能很棒,但我们还需要更多。在 create-project 之后,你仍然需要做些事情,我们的 createproject 脚本就是为了自动化这些事情而设计的。
  • 为我们的本地 macOS LEMP 服务器环境集成了设置 macOS

特性

  • 支持 HTTPS
  • 专为纯 WordPress 开发设计
  • 快速简单的模板,适用于开发和部署
  • 用于创建新 WordPress 项目的可定制 bash 脚本
  • 自动初始化 GitHub 仓库
  • 自动生成 MySQL 数据库
  • 自动设置开发服务器的项目相关主机
  • 使用 wp-cli 清理默认的 WordPress 内容
  • bin/createproject.sh 中包含的 Capistrano 3 部署模板 Capistrano 3
  • 使用 Composer 来处理 WordPress 安装和插件依赖以及更新
  • 用于开发、测试和生产的 Dotenv 环境 Dotenv
  • 支持本地 LEMP 开发环境(macOS / Windows

要求

  • mkcert
  • Composer v2
  • 了解 bash 脚本编写、使用 Capistrano 进行部署、npm 包、bundle、composer 等的基本知识。
  • 本地服务器环境 macos-lemp。可能可以配置 MAMP 或 Docker(我们没有第三方环境的相关经验或支持)。
  • GitHub 账号
  • 基于 Unix 的操作系统或 Windows WSL
  • 可选:访问支持 sftp 和 git 的测试和生产服务器
  • 项目位于 $HOME/Projects 目录下
  • Git
  • PHP >= 8.3
  • Ruby >= 2.6
  • Perl

安装

  1. 安装预置软件,运行 xcode-select --install 和安装最新版本的 homebrew
  2. 安装最新版本的 Composermkcert
  3. 将此仓库克隆到 ~/Projects 目录下
mkdir -p $HOME/Projects && cd $HOME/Projects && git clone git@github.com:digitoimistodude/dudestack.git
  1. 进入 dudestack 目录并运行设置脚本
cd $HOME/Projects/dudestack/bin && bash macos.sh

如果你使用 WSL/Windows

cd $HOME/Projects/dudestack/bin && bash wsl.sh

文档

使用createproject bash脚本来创建新项目

创建新项目有很多配置要做。我们希望通过创建一个名为 createproject.sh 的 bash 脚本来自动化大部分配置。

  • 你使用的是类似 customer.example.com 的测试服务器,并将你的客户网站存储为 customer.example.com/customerone。你的测试服务器用户具有适当的权限,例如更改 /tmp 中的内容。
  • 你使用的是单独的生产服务器,可能没有所有权限,例如在 /tmp 目录中写入。
  • 你使用 native macOS LEMP
  • 你的仓库存储在 GitHub 上
  • 你的项目主机名为 project.test
  • 你使用 gulp、npm 和 webpack 没问题
  • WordPress 依赖由 composer 控制

createproject.sh的作用

当你运行 createproject 时,它看起来是这样的

createproject.sh

  1. 首先,它会使用 dudestack 设置运行 composer create-project
  2. 安装我们的默认 WordPress 插件并更新它们
  3. 自动使用项目名称创建MySQL仓库(默认假设您已安装macos-lemp
  4. 安装capistrano部署工具
  5. 使用您的GitHub项目详情和路径生成默认capistrano配置(config/deploy.rb,config/deploy/staging.rb,config/deploy/production.rb)
  6. 设置WordPress配置(wp-config凭据到.env)并自动加盐
  7. 在单独的子目录/wp下安装WordPress(因此,管理员位于example.test/wp/wp-admin)
  8. 为安全起见,将默认管理员用户设置为非“admin”(可以在bin/createproject.sh中配置额外用户)
  9. 移除默认的WordPress帖子、主题和插件以及其他不实用的内容
  10. 激活默认插件、时区和永久链接
  11. 刷新重写,添加对永久链接和Web字体的支持
  12. 设置文件权限
  13. 初始化GitHub仓库
  14. 创建HTTPS证书
  15. 为开发环境设置虚拟主机
  16. 更新/etc/hosts文件
  17. 重启开发服务器

您可能需要在每个项目中编辑的内容

  • 运行createproject后,您应该在air-light/bin下运行newtheme.sh。这将生成WordPress主题并导入最新的devpackages,其中包含gulp、stylelint、webpack等,用于现代WordPress主题开发
  • 要发布项目预发布/生产版本:生产服务器SSH凭据和路径在config/deploy/production.rb中,因为它们通常在每个项目中都不同。如果您服务器上的目录结构相同,您可以编辑bin/createproject.sh,以便在每个项目中不必重复操作。
  • 您需要gulp或grunt,如果您不使用我们的入门主题air-light,请随意使用我们的devpackages - gulpfile和npm包设置等,这些是为此目的设计的

请注意

  • Dudestack只是一个入门包,没有任何主题配置。我们将主题开发完全留给您。我们有自己的入门主题,可以与dudestack一起使用,请参阅air-light

入门

  1. 所有假设您的项目都在~/Projects中。您应该确保该文件夹存在。您也可以选择使用其他文件夹,但这样需要进行大量的搜索和替换,使用这种方法将相当没有意义。
  2. 运行macos-lemp-stack(如果您使用其他开发环境,如MAMP Pro服务器,您需要相应地编辑bin/createproject.sh。我们不提供对所有环境的支持
  3. 根据您的需要编辑createproject.shcomposer.json

要启动一个新项目,请运行createproject并享受乐趣。

付费或高级插件

编辑您的composer.json并在仓库部分添加以下行,用逗号分隔

Advanced Custom Fields Pro

根据pivvenit/acf-composer-bridge,添加到“repositories”部分

    {
      "type": "composer",
      "url": "https://pivvenit.github.io/acf-composer-bridge/composer/v3/wordpress-plugin/"
    },

然后到“requires”部分

    "advanced-custom-fields/advanced-custom-fields-pro": "*",

Gravity Forms

根据gtap-dev/gravityforms-composer-installer,添加到“repositories”部分(请记住从此处更新到最新版本)

{
  "type": "package",
  "package": {
    "name": "gravityforms/gravityforms",
    "version": "2.5.14.3",
    "type": "wordpress-plugin",
    "dist": {
      "type": "zip",
      "url": "https://www.gravityhelp.com/wp-content/plugins/gravitymanager/api.php?op=get_plugin&slug=gravityforms&key={%WP_PLUGIN_GF_KEY}"
    },
    "require": {
      "composer/installers": "^1.4",
      "gotoandplay/gravityforms-composer-installer": "^2.3"
    }
  }
},

然后到“requires”部分

    "gravityforms/gravityforms": "*",

Object Cache Pro

要安装此包,您需要安装Redis和PHP Redis。

添加到“repositories”部分

{
  "type": "composer",
  "url": "https://objectcache.pro/repo/"
}

然后到“requires”部分

"rhubarbgroup/object-cache-pro": "^1.13.0"

Relevanssi

添加到“repositories”部分

{
      "type": "package",
      "package": {
        "name": "relevanssi/relevanssi-premium",
        "version": "2.20.3",
        "type": "wordpress-plugin",
        "dist": {
          "type": "zip",
          "url": "https://www.relevanssi.com/update/get_version.php?api_key=xxx&version=2.20.3"
        }
      }
    },

然后到“requires”部分

    "relevanssi/relevanssi-premium": "2.20.3",

Polylang Pro(以及其他没有仓库的插件)

添加到“repositories”部分

,
    {
      "type": "package",
      "package": {
        "name": "polylang/polylang-pro",
        "type": "wordpress-plugin",
        "version": "3.2.5",
        "dist": {
          "type": "zip",
          "url": "https://plugins.dude.fi/polylang-pro_3.2.5.zip"
        }
      }
    },

然后到“requires”部分

    "polylang/polylang-pro": "3.2.5",

以类似的方式,您可以添加其他没有composer仓库的付费插件。我们几乎涵盖了我们在使用中遇到的几乎所有此类插件。

在获取新zip文件时,我在我的~/.bashrc中使用此功能

function plugin() { scp -r $@ 'username@yoursite.com:~/path/to/plugins/'; }

因此,通过简单的ssh配对(无密码登录),我可以通过简单的命令上传插件:plugin gravityforms_1.8.20.5.zip然后只需更改版本并运行composer update。DRY,您看到了。

WP-CLI别名

WP-Cli包含在dudestack项目中,通过composer.json进行配置,默认情况下不会全局工作。您需要在Mac或Linux的.bashrc.bash_profile文件中添加此别名

alias wp='./vendor/wp-cli/wp-cli/bin/wp'

SEO插件

我们默认选择的SEO插件是The SEO Framework,它是一个简洁、简单的解决方案,适用于大多数项目。

如果客户熟悉Yoast并要求使用它,或者项目以博客为中心,可以切换到Yoast SEO。在这种情况下,将composer.json中的wpackagist-plugin/autodescription包替换为wpackagist-plugin/wordpress-seo。同时,强烈建议安装wpackagist-plugin/so-clean-up-wp-seo以清理UI中的冗余。

问题

如果您有任何问题或疑虑,请随时提出。