通过 CLI 管道传输内容

除了转换文件,Asciidoctor CLI 还可以从标准输入 (STDIN) 读取内容和/或写入内容到标准输出 (STDOUT)。此功能称为管道。

使用 - 标志,您可以将内容管道传输到 asciidoctor 命令。此标志告诉 Asciidoctor 从标准输入 (STDIN) 读取源。例如

$ echo 'content' | asciidoctor -
STDIN 的任何变体都可以。

此命令实际上与

$ echo 'content' | asciidoctor -o - -

当从 STDIN 读取源时,Asciidoctor 没有输入文件的引用。因此,它默认将转换后的文本发送到标准输出 (STDOUT)。

如果您想将完整文档写入输出文件,可以使用 -o 标志指定。例如,以下命令将一个独立的 HTML 文档写入 output.html,而不是 STDOUT

$ echo 'content' | asciidoctor -o output.html -

当您将内容管道传输到 asciidoctor 命令时,它不再了解文档的位置。因此,相对引用(如 include)可能无法按预期工作。要解决此问题,您应该使用 -B 选项指定一个绝对基础目录

$ echo 'content' | asciidoctor -B /path/to/basedir -o output.html -

或者,您可以通过将绝对路径传递给 docdir 属性来设置一个人工文档目录

$ echo 'content' | asciidoctor -a docdir=/path/to/docdir -o output.html -

尝试这两种方法,以确定哪种更适合您的需求。

当通过 asciidoctor 命令将源从 STDIN 管道传输到 STDOUT 时,您通常只需要转换后的正文(即,可嵌入的 HTML)。要生成该变体,请添加 -e 标志,它是 --embedded 的缩写(以前是 -s 标志)

$ echo 'content' | asciidoctor -e -

或者您可能还想包含 doctitle

$ echo -e '= Document Title\n\ncontent' | asciidoctor -e -a showtitle -