forme / base
Forme base 服务器设置
Requires
- php: >=8.1
- composer/installers: ^2.2
- wikimedia/composer-merge-plugin: ^2.0
- wpackagist-plugin/advanced-custom-fields: ^6.0
Requires (Dev)
- filp/whoops: ^2.9
- roave/security-advisories: dev-master
- squizlabs/php_codesniffer: ^3.7
- symfony/var-dumper: ^6.0
- wpackagist-plugin/debug-bar: ^1.0
README
Forme Base
Forme 框架基础服务器项目模板,用于本地开发和服务器部署。
描述
它在范围上与 Bedrock 很相似,但有一些不同的哲学。
主要目标是
- 为 Forme WordPress 项目提供一个易于使用的模板。
- 将 WordPress 放入
public
网站根目录,但其他方面保持标准 WP 文件夹结构不变。 - 使用 composer 管理WordPress 插件、WordPress 主题和通用 PHP 库,但 NOT WordPress 本身,除了初始安装。
- 不是单一仓库。它旨在成为你 WordPress 项目的 根 部分。你的自定义主题和插件本身应该存在于它们自己的独立 git 仓库中,并最终通过 Packagist 或 Satis 仓库提供给 composer。
- 利用 npm 工作空间,使我们能够跨所有主题和插件构建资源。
你可以用它来构建本地开发环境或用于部署。
要求
- Unix 机器/虚拟机 - Mac 或 Ubuntu - Windows 不受支持。可能会稍微有点效果,但谁也不知道。
- php 8.1 或更高版本
- composer 2
- wp cli 用于自动配置和安装
- wget 和/或 curl 用于自动安装(如果没有 wp cli)
- node v18(最好通过 nvm)
入门
您可以在本地机器上运行 composer create-project forme/base project-name
来创建一个新项目。这将
- 在
public
文件夹中安装最新版本的 WordPress(需要 wp cli、curl 或 wget) - 添加 wp-packagist composer 仓库
- 安装 wikimedia merge 插件,以便我们可以将插件和主题依赖项拉入主 vendor 文件夹
- 如果通过 composer 拉取,添加插件和主题的正确安装路径
- 安装 ACF(非专业版)
- 安装 Symfony var-dumper 组件
- 安装 Whoops 错误页面
- 安装 WP 调试栏
- 初始化
wp-config.php
,包括提示您的数据库凭证、添加FORME_PRIVATE_ROOT
const、将WP_ENV
设置为development
并引入自动加载。(需要 wp cli) - 创建一个空的
.env
文件 - 包含
package.json
,包括基本工作空间配置
然后您可能想要
- 根据需要编辑
.env
- 使用 composer 安装您需要的任何现有插件或主题,或将本地工作链接到
wp-content
并运行composer update
- 运行
git init
并在开发期间将其保持在版本控制中 - 在浏览器或通过
wp-cli
以通常方式设置您的 WordPress 网站
您可能需要在第一次安装依赖于合并插件功能的插件或主题之前删除 composer.lock
。
部署
在服务器上,通常需要
- 将您的仓库
git clone
到新目录 - 进入目录并运行
composer setup-wordpress
- 运行
composer install
和您需要的任何其他本地脚本 - 将
public/wp-config.php
中的WP_ENV
更改为development
之外的内容 - 运行
composer init-dotenv
并填写 - 使
public
成为网站根目录,或将public
链接到您现有的网站根路径
脚本
以下自定义脚本可通过composer使用。
composer install-wordpress
- 在public
文件夹中安装最新版本的WordPress。composer configure-wordpress
- 初始化wp-config.php
,包括添加FORME_PRIVATE_ROOT
常量,将WP_ENV
设置为development
composer require-autoload
- 在wp-config.php
中添加require autoloadcomposer init-dotenv
- 将.env.example
复制到.env
composer setup-wordpress
- 运行上述所有四个脚本
在create-project
时,post-root-package-install
钩子运行setup-wordpress
和init-dotenv
(即上述所有内容)
在安装和更新时,post-install-cmd
和post-update-cmd
钩子运行npm i --omit=dev && npm run build -ws
。您可能想在本地机器上禁用此功能,特别是如果您没有创建开发主题和插件的符号链接,因为每次composer更新时它都会运行。
工作区
npm Workspaces允许我们在所有插件和主题中从服务器根目录安装node包和运行资源构建,或者更具体地说,目录名以-plugin
和-theme
结尾的(如Forme的默认设置),并且具有定义任何必要npm命令的package.json
。主要的node_modules
目录应在根仓库目录中。
需要注意的是,这一切都是天真地运行的,因此如果您安装了一些以-plugin
或-theme
结尾的第三方插件或主题,它们包含npm
脚本,它们将运行,这可能不是您想要的。如果您需要更改配置,请查看package.json
。
npm install --omit=dev
将在所有匹配的主题和插件中运行。
npm run build -ws
将在所有匹配的主题和插件中运行build
。
这些命令应在composer更新/安装时自动运行,但您也可以直接运行它们。
Valet Driver
如果您使用Valet进行本地开发,我们为此提供了一种驱动程序。如果您还没有这样做,应将此复制到您的本地valet配置中
cp utils/FormeServerValetDriver.php ~/.config/valet/Drivers/FormeServerValetDriver.php
Wikimedia Merge Plugin
配置了wikimedia/composer-merge-plugin
插件以查找目录名分别以-plugin
和-theme
结尾的插件和主题。这是forme插件和主题项目的当前默认命名模式,但如果需要,您可以更改此逻辑。
它天真地匹配,因此即使是在forme项目中,如果您恰好使用了一个以-plugin
或-theme
结尾的插件或主题,您可能希望配置它不同(或者您可以直接将其目录名更改为其他名称)
Inlined Composer
如果您出于某种原因有现有的vanilla WordPress安装,并且只想设置好一切以便可以使用Forme框架,或者甚至只想使用composer管理您的WordPress项目依赖项,您可以将utils/composer.json
复制到您的项目根目录中。再次强调,这比公共Web根目录高一级。
如果您的Web根目录不叫public
,您可能需要编辑此文件,只需运行查找和替换即可。
此版本的composer.json
文件包含与根版本相同的脚本,但内联而不是依赖于任何外部文件。它主要包含方便性 - 这意味着您可以只复制此单个文件到另一个项目中,而不用担心这里的任何其他目录和文件,并且仍然可以访问上面列出的命令。
它由scripts/inline_composer.sh
生成 - 如果您在修改或分叉此存储库并需要添加其他shell脚本以进行内联,请查看那里。