va-gov/content-build

VA.gov 的前端。此存储库包含生成 www.va.gov 网站的代码。它包含一个使用 Drupal CMS 内容的 Metalsmith 静态站点构建器。此文件在此处用于发布到 https://packagist.org.cn/packages/va-gov/content-build,以便 CMS CI 系统可以

安装量: 79,692

依赖项: 0

建议者: 0

安全性: 0

星标: 20

关注者: 113

分支: 9

公开问题: 30

语言:JavaScript

类型:node-project

v0.0.3601 2024-09-24 21:57 UTC

This package is auto-updated.

Last update: 2024-09-27 13:25:32 UTC


README

这是什么?

此存储库包含用于生成 VA.gov 网站静态 HTML 页面的脚本和模板。

有几个存储库包含用于构建 VA.gov 的代码和内容。如果您想开始在本地运行 VA.gov,您应该阅读 设置您的本地前端环境 文档。

常见命令

在本地设置好网站后,以下是一些您可能会找到有用的常见命令

构建静态内容

VA.gov 包含许多页面,这些页面包含从基于 Drupal 的内容模型生成的内容。在测试静态页面的更改或查看您的应用程序在 VA.gov 上的外观时,请按照以下部分构建这些静态页面。

注意:从 Drupal 获取内容需要设置并运行 SOCKS。在尝试获取 content-build 的任何 Drupal 内容之前,在您的终端中运行 vtk socks on

准备您的环境设置

Content-Build 可以直接从 Drupal 端点获取新鲜内容。为此,对内容的请求必须经过身份验证。如果您正在获取新鲜内容,则必须确保设置了以下命令行参数或环境变量

身份验证凭据存储在本地 .gitignore'd 文件 .env 中。提供了一个示例文件以供您开始

cp .env.example .env

文件内容

# .env file contents
DRUPAL_ADDRESS=https://cms-8ry6zt2asg946vdfuiryyamuc9gkuyzc.demo.cms.va.gov/
DRUPAL_USERNAME=content_build_api
DRUPAL_PASSWORD=drupal8

在大多数情况下,这些值将足以运行带有新鲜 CMS 内容的内容构建。但是,如果您需要连接到不同的 CMS 端点,您可以在 .env 文件中覆盖这些值,或者也可以在命令行上覆盖特定的值。例如

yarn build --pull-drupal --drupal-address=https://some-other-endpoint.cms.va.gov

如果您需要从 https://prod.cms.va.gov 获取内容,请联系 #cms-support 并请求具有读取 Drupal 内容 API 权限的用户。您需要使用分配给您的凭据来访问生产环境。

使用以下命令构建静态页面

yarn build(默认情况下,当缓存为空时,从 S3 获取最新的内容缓存)

注意:在 main 上运行 yarn build 可能需要 8 个小时以上。有许多 Drupal 资产要获取,以及许多模板要构建。请参阅下方的 优化构建时间,以显著缩短此时间,并仅构建您开发工作中所需的模板/资产。

  • 使用 --pull-drupal 在需要时从 Drupal 获取新鲜内容(需要 SOCKS 代理访问)。添加 --use-cached-assets 以跳过资产下载
  • 默认情况下创建到 ../vets-website/build/localhost/generated 的符号链接,允许访问应用程序包(使用 --apps-directory-name 更改默认应用程序目录名称;例如 --apps-directory-name application
  • 运行一次以构建静态 HTML 文件
  • 当根据新的 Drupal 实体添加新模板时,需要再次运行此命令

yarn serve

  • 使用最新的构建启动网站的本地服务器
  • 使用 --port 来设置服务器的端口号(默认为 3002
  • 使用 --buildtype 来设置构建类型(默认为 localhost

运行 yarn watch

  • 监控 liquid 模板的变化

运行 yarn preview

  • 您可以将此命令与 yarn watch 并行运行。它会添加本地路由,以便预览 Drupal 节点(例如,/preview?nodeId=XX)。

如果您无法访问 SOCKS 代理,可以使用以下方法获取内容的最新缓存版本

yarn fetch-drupal-cache

故障排除

vets-website 一样,vagov-content 仓库位于 content-build 旁边。在构建过程中会拉取 vagov-content 中的 markdown 文件。如果 vagov-content 中存在 markdown 文件,但模板已在 content-build 中删除,您将看到如下类似错误的构建错误

[Error: ENOENT: no such file or directory, open '{file path on your local machine}']

如果这种情况发生在您身上,请确保您在本地机器上拥有来自 vagov-content 的最新版本,然后再次尝试构建 content-build

优化构建时间

另一种优化内容构建的构建/监控时间的方法是忽略您在本地测试中不需要的模板和资源。例如,如果您只在工作在活动着陆页上,您可以选择跳过构建许多其他的内容类型(如资源和支持页面和事件)。如果您不需要拉取任何 Drupal 资源(如图片),也可以跳过该步骤。这将大大加快您的构建时间。

  1. 打开 src/site/stages/build/drupal/individual-queries.js
  2. 找到 getNodeQueries 函数
  3. 取消注释您不需要的内容类型(仅保留基本页面/着陆页查询以防万一)。如果您正在处理活动着陆页,则您的函数可能如下所示
function getNodeQueries(entityCounts) {
  return {
    ...getNodePageQueries(entityCounts),
    GetNodeLandingPages,
    // ...getNodeVaFormQueries(entityCounts),
    // ...getNodeHealthCareRegionPageQueries(entityCounts),
    // ...getNodePersonProfileQueries(entityCounts),
    // ...getNodeOfficeQueries(entityCounts),
    // ...getNodeHealthCareLocalFacilityPageQueries(entityCounts),
    // ...getNodeHealthServicesListingPageQueries(entityCounts),
    // ...getNewsStoryQueries(entityCounts),
    // ...getPressReleaseQueries(entityCounts),
    // GetNodePressReleaseListingPages,
    // ...getNodeEventListingQueries(entityCounts),
    // ...getNodeEventQueries(entityCounts),
    // ...getVaPoliceQueries(entityCounts),
    // GetNodeStoryListingPages,
    // GetNodeLocationsListingPages,
    // GetNodeLeadershipListingPages,
    // GetNodeVamcOperatingStatusAndAlerts,
    // GetNodePublicationListingPages,
    // ...getNodeHealthCareRegionDetailPageQueries(entityCounts),
    // ...getNodeQaQueries(entityCounts),
    // GetNodeMultipleQaPages,
    // GetNodeStepByStep,
    // GetNodeMediaListImages,
    // GetNodeChecklist,
    // GetNodeMediaListVideos,
    // GetNodeSupportResourcesDetailPage,
    GetNodeBasicLandingPage,
    GetCampaignLandingPages,
    // ...getVetCenterQueries(entityCounts),
    // ...getVbaFacilityQueries(entityCounts),
    // GetVetCenterLocations,
    // GetPolicyPages,
    // GetBillingAndInsurancePages,
    // GetRegisterForCarePages,
    // GetMedicalRecordsOfficePages,
  };
}
  1. 打开 src/site/stages/build/index.js
  2. 找到此行:smith.use(downloadDrupalAssets(BUILD_OPTIONS), 'Download Drupal assets'); 并取消注释
  3. 删除您的 .cache/localhost/drupal/pages.json 文件
  4. 确保您正在运行 SOCKS(vtk socks on
  5. 在您的终端中运行 yarn build --pull-drupal && yarn watch 以启动带有您新模板选择的开发服务器

在 GitHub Codespaces 中工作

阅读此存储库的 Codespaces 文档.

运行测试

单元测试

运行所有单元测试,使用

yarn test:unit

如果您想 运行单个测试文件,可以提供其路径

yarn test:unit src/site/filters/liquid.unit.spec.js

运行目录中的所有测试,可以使用通配符模式

yarn test:unit src/site/filters/**/*.spec.js

更多命令

经过一段时间,您可能会遇到一些不太常见的工作任务。我们有很多命令可以执行非常具体的事情。

支持的浏览器

不是存储库的成员,但想加入吗?

  • 如果您是 VA.gov 平台团队的成员,请联系您的项目经理。
  • 如果您是 VFS 团队的成员,您必须完成 平台导向 才能被添加到此存储库。这包括在 GitHub 中完成您的平台导向票据。