netglue / prismic-cli

Prismic内容模型的CLI工具


README

Build Status

codecov Psalm Type Coverage

Latest Stable Version Total Downloads

这是一个基于Symfony Console的开发工具,因此需要使用--dev来安装 - 它旨在作为构建过程的一部分使用,例如与npm-watch或类似工具一起使用。

$ composer require --dev netglue/prismic-cli

此库的主要安装目标是Mezzio应用程序,因为它已被构建为与Laminas CLI包集成。

在安装过程中,如果您将此库作为Mezzio应用程序的一部分安装,则应提示您注入配置提供程序。

laminas/laminas-cli不是此库的要求,因此如果您想使用它,您也需要要求它。

您可以使用此工具“独立”使用 - ./example/example.php应该能为您指引正确的方向。检查此示例也很重要,以便一切都能理解。

构建文档模型JSON文件

给定一些配置,命令primo:build从PHP源生成JSON文件,您可以将这些文件复制并粘贴到Prismic.io的自定义类型编辑器中。

假设您正在使用返回应用程序级配置的DI容器,该配置使用config作为服务ID,则可以插入类似以下内容的配置,以便在调用时构建您的类型。

<?php
return [
    'primo' => [
        'cli' => [
            'builder' => [
                'source' => __DIR__ . '/../directory/where/plain-php-files-are',
                'dist' => __DIR__ . '/../where-you-want-the-json-files-to-go',
            ],
        ],
        'types' => [
            [
                'id' => 'some-type',
                'name' => 'My Document Type',
                'repeatable' => true,
            ],
        ],
    ],
];

该库目前缺少文档和良好的测试套件,但在./example中有注释示例。当配置为Mezzio应用程序的一部分时,请检查./src/ConfigProvider.php以获取更多信息。

上传、下载和与远程存储库比较文档模型

如果您已设置“自定义类型API”并拥有使用它的有效访问令牌,则将以下内容添加到您的配置中,并包含CustomTypeApiConfigProvider的内容,将配置3个额外的命令,这些命令将使您能够上传、下载并在本地和远程定义之间比较更改。

<?php
// Local Configuration
return [
    'primo' => [

        // ...

        'custom-type-api' => [
            'token' => 'an access token retrieved from repository settings',
            'repository' => 'my-repo', // The repo name such as "my-repo" as opposed to the full url or "my-repo.prismic.io"
        ],

        // ...
    ],
];

配置完成后,您可以执行以下操作:

  • primo:types:download将下载所有JSON定义到您的本地dist目录,或者添加一个type参数以仅下载其中一个。
  • primo:types:upload将本地定义的定义上传到远程类型API,使其立即在您的存储库中可用。同样,一个type参数将处理单个定义。
  • primo:types:diff将在控制台生成颜色化的差异,显示本地和远程之间的更改。

这些工具使用了netglue/prismic-doctype-client,因此如果您想了解更多信息,请查看该工具,还可以链接到Prismic自定义类型API文档

查询存储库的命令

还有一些命令用于从存储库获取信息。这些命令是可选的。在安装过程中,有一个名为ApiToolsConfigProvider的配置提供程序,如果您不想使用这些工具,则可以跳过。

所有命令都需要配置了API客户端,使用netglue/prismic-client

上述配置提供程序设置了自己的API客户端工厂,跳过缓存实现,因为在您使用这些工具的情况下,您可能不想使用过时的信息。

在某个地方配置存储库,信息类似以下内容:

return [
    'prismic' => [
        'api' => 'https://your-repo.cdn.prismic.io/api/v2',
        'token' => null, // Or 'string-access-token'
    ],
];

当前可用的命令

  • primo:info - 无参数时,提供关于仓库本身的信息
  • primo:info <文档ID> - 显示特定文档的信息
  • primo:list - 列出配置仓库中可用的类型
  • primo:list <类型> - 列出特定类型的文档和ID

您可以在我们为Prismic/Mezzio集成库编写的测试仓库 netglue/primo 中尝试这些命令,通过运行 ./example/api-queries.php

注意:此库不能替代Prismic提供的JS命令行工具