使用 Github + Pipedream 从 Git repo 发布 DEV 文章
我在 Mac 上使用VS Code编写了这篇文章,并通过运行 发布了它git push
。我所有的 DEV 帖子都由 Git 跟踪,我可以从本地机器上管理它们。
下面,我将告诉您为什么要进行此项设置,并向您展示如何轻松地为您自己的帖子进行配置。
工作原理
我将首先向您展示成品,以便您了解其端到端的工作原理。
首先,我创建一个新的 Markdown 文件:
---
title: My First DEV Post
---
Hello, world!
并将其推送到 Github:
git add my-first-post.md
git commit -m "Adding first post"
git push
一旦我推送,这个 Pipedream 工作流程就会在我的 DEV 帐户中创建该帖子的草稿:
我可以再次编辑git push
,草稿就会更新。当我准备发布时,我会published: true
在 YAML 前置内容的顶部添加以下内容:
---
published: true
title: My First DEV Post
---
Hello, world!
然后运行:
git add my-first-post.md
git commit -m "Publishing first post"
git push
并已发布:
那太酷了!
为什么要在 Git 仓库中管理 DEV 帖子?
我喜欢用VS Code写代码,喜欢它的各种键盘快捷键、插件以及其他我添加的实用工具,让它变得独一无二。当我在开发编辑器中编写 Markdown 时,我会怀念我的本地设置。这正是我设置它的主要原因:我可以在自己的编辑器中,用自己的快捷键和工具写文章。
但是将文章存储在 Github repo 中还有其他好处:
- Git 会跟踪您对文章所做的每一项更改。您可以比较不同版本之间的更改,也可以恢复到旧版本。如果您将代码库设为公开,任何人都可以发起拉取请求来修复拼写错误、失效链接等问题。
- 您可以运行Git hooks或Github Actions来自动执行基本任务:例如,您可以在更改提交到您的 repo 之前运行脚本来验证您的 Markdown 或进行拼写检查。
git push
您可以使用Pipedream工作流程触发其他更复杂的自动化操作。例如,一旦您将文章发布到 DEV,就可以自动将其链接发布到 Twitter。
如何设置
首先,您需要一个Github帐户和一个DEV API 密钥。
首先,创建一个新的 Github repo来管理你的 DEV 帖子:
然后在本地克隆 repo:
git clone git@github.com:[YOUR_USERNAME]/dev-to-posts.git
接下来,您将配置Pipedream工作流程以使用DEV API发布您的文章。
Pipedream 是一个面向开发者的集成平台。Pipedream 的工作流程类似于Github Actions:每次您将新的 Markdown 文件推送到代码库时,工作流程都会运行。Pipedream 工作流程使用预构建的操作和自定义 Node.js 代码编写,每个操作都可以连接到数百个 API 集成。您可以在 Pipedream 的免费套餐中免费运行此工作流程。
访问https://pipedream.com并按右上角的登录按钮注册 Pipedream 帐户:
注册后,打开此 DEV 工作流程,然后点击右上角附近的“复制” 。这会在您的帐户中创建我的工作流程的副本,该副本将在您的DEV 仓库中运行。
首先,您需要配置触发器步骤。每次在您的代码库中添加或修改 Markdown 文件时,此工作流程都会运行。您只需连接您的 Github 帐户,然后从下拉菜单中选择您的代码库即可:
然后点击触发步骤右下角的“创建源” 。这将在你的 Github 仓库中配置一个webhook,每当推送发生时都会通知此工作流。
您还需要打开此触发步骤以确保它在新的推送时自动运行:
工作流程的下一步——create_and_update_dev_posts
运行 Node.js 代码将此 Markdown 推送到 DEV API。如果您向代码库添加新文章,该工作流程会创建一篇新的 DEV 文章。如果您要将更新推送到现有文章,该工作流程会更新该 DEV 文章。
要使此步骤生效,您只需连接您的 DEV API 密钥即可。点击此步骤顶部附近的“连接帐户”按钮。与触发步骤一样,这将提示您输入您的 DEV API 密钥:
现在你已经准备好推送你的第一篇文章了。在上面克隆的 Git 仓库中创建一个新的 Markdown 文件,并添加以下内容:
---
title: My First DEV Post
---
Hello, world!
添加、提交并将此文件推送到 Github:
git add my-first-post.md
git commit -m "Adding first post"
git push
一旦你推送这些更改,你应该会看到 Pipedream 工作流程中出现一个新事件:
这将触发工作流程,在 DEV 中创建一个新的草稿文章:
要发布文章,请在文件顶部的YAML 前置内容published: true
部分添加以下内容:
---
title: My First DEV Post
published: true
---
然后运行:
git add my-first-post.md
git commit -m "Publishing first post"
git push
您应该会看到您的全新文章在 DEV 中出现并发布:
要取消发布,请将published
标志设置为false
:
---
title: My First DEV Post
published: false
---
由于您拥有 Pipedream 工作流程的副本,您可以随意修改代码。您可以更新 DEV 步骤来更改文章的发布方式,或者添加一个步骤,以便在发布新文章时向 Slack 发送消息或发布推文。如果您进行了任何编辑,请在下方评论区分享,或发布您自己的文章!
这篇文章的其余部分讨论了集成的其他细节,例如管理文章中的图像,以及您可以用来更改帖子详细信息的其他YAML 前端内容。
在 DEV UI 中更改文章
除非您也对 repo 中的文件进行更改,否则您对 DEV UI 中的文章所做的任何更改都将被覆盖。
如何在帖子中添加图片
目前,DEV 没有用于上传图像的 API,因此我使用Cloudinary来托管我的图像,并在我的 Markdown 中引用 Cloudinary URL:

理论上,这个工作流程可以更改为在文章 Markdown 中引用本地图像:

一旦您将图像提交到您的 repo,Pipedream 工作流程就可以将图像直接上传到 Cloudinary,并将文章引用更改为指向托管版本。
请记住 - 您之前复制的 Pipedream 工作流程是您可以修改的。您可以向该工作流程添加任何您想要的逻辑,例如将图片上传到 Cloudinary 或其他托管服务提供商,或者在您的发布流程中添加任何其他自定义内容。
仅限默认分支
工作流程仅处理默认 repo 分支上的提交(master
除非您更改了它)。其他分支的提交将被忽略,直到它们合并到您的默认分支。
一个 Markdown 文件:一篇帖子
您推送到 DEV 仓库的每个 Markdown 文件都会生成一个单独的 DEV 帖子。您的文件必须带有.md
扩展名才能被处理。工作流程会忽略所有非 Markdown 文件。
前言
Pipedream 工作流使用DEV 支持的相同 YAML 前端内容来更新已发布状态、标题、标签等。
任何 front matter 变量都不是必需的。如果您不添加 front matter,您的文章将以草稿形式保存到 DEV,标题将基于文件名(见下文)。
标题
title
如果存在,则始终使用前置变量。
如果title
不存在,工作流程将使用文章的文件名,并将连字符和下划线转换为空格。保留大小写:
my-first-post.md -> my first post
My_First_Post.md -> My First Post
My First Post.md -> My First Post
如果您依赖此约定,然后稍后想要设置title
前置变量,则工作流将根据变量的值更新标题,并使用它来代替文件名。