ronilaukkarinen/wpstack-rolle

现代WordPress堆栈

安装: 114

依赖项: 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 的主要重点是它对我们公司和个人员工的工作方式。这意味着它可能需要调整才能为您工作。如果出现问题,请通过 问题 提出问题。

文档和指南

目录

  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/,就像它是一个 wp-content 的原因。这更好地描述了它,因为我们不希望它过于面向编程,而是更面向前端开发者(用于开发 WordPress 主题和功能)
  • Composer修改,用于安装更多包,例如基于芬兰语的本地化包等,这些并非Bedrock的原始部分。
  • 自动化。我的意思是composer的create-project非常棒,但我们还需要更多。在create-project之后,你仍需要做一些事情,我们的createproject启动脚本就是为了自动化剩余的过程。
  • 内置本地服务器环境设置,用于我们的原生macOS LEMP服务器

特性

  • 支持HTTPS
  • 专为纯WordPress开发设计
  • 快速且易于使用的模板,用于开发和部署
  • 可自定义的bash脚本,用于创建新的WordPress项目自动化
  • 自动初始化GitHub仓库
  • 自动生成MySQL数据库
  • 为开发服务器自动设置项目相关的宿主设置
  • 使用wp-cli清理默认的WordPress内容
  • Capistrano 3部署模板已包含在bin/createproject.sh中
  • Composer负责WordPress安装、插件依赖和更新
  • 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目录中写入。
  • 你使用原生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. 生成默认的capistrano配置(config/deploy.rb、config/deploy/staging.rb、config/deploy/production.rb),包含你的GitHub项目细节和路径
  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通过composer.json在每个项目中包含在dudestack中,默认情况下不会全局工作。您需要在您的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中的冗余。

问题

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