重新创建类似 Travis CI 控制台日志界面
Recreate Similar Travis CI Console Log Interface
第一次看到 Travis CI 实时更新构建控制台日志时,我承认,给我留下了深刻的印象。而且我知道,通过一些非常耗时的 CSS 样式和 JS 编码,我可能会得到一半好的东西。但是,我的问题是,是否有任何库可以使构建这样的东西更容易?我知道 Travis CI 使用 Ember 作为他们的网络应用程序框架,但我猜这不是 Ember 的组件,对吧?
"travis-web" 使用 Ember,但 "log-container" 的功能是自定义的。它包含日志文件的文本 ("Download Log")。请下载日志的原始版本并查看。
你会看到,日志文件有几个"annotations"。它是一种指示应用某些自定义样式的区域的语法。
这些行由 Log script 处理,然后删除。
好吧,我们来分解一下:
► 代码折叠
折叠以 "travis_fold:start:section_name"
开始并以 "travis_fold:end:section_name"
结束
折叠内的内容放置在一个跨度中。
默认情况下,跨度高度为 0。最初不显示内容。
单击时,额外的 css 样式 open
将添加到跨度中。
样式 open
将 span 元素的 height
设置为 auto
- 折叠的内容将显示出来。
行号://url#L100
注释已从日志文件内容中删除
(total number of lines = raw log file lines - annotation lines
).
所有行号都是锚元素(a
),因此可以进行逐行引用。
编号本身由 CSS 完成 - 数字添加在锚点之前。
log-body p a::before {
content: counter(line-numbering);
counter-increment: line-numbering;
颜色
整个原始日志文件都使用了 ansi 颜色代码。
内容由 AnsiParser script 解析,颜色代码被转换(deansi'ed)为它们的 css-class 颜色名称。
字符串
[0K[33;1mBuild system information[0m
变成
<span id="1-3" class="yellow bold">Build system information</span>
滚动到日志末尾并移至顶部
滚动到日志结尾类似于滚动到 div 的结尾:this.scrollIntoView(false);
激活滚动时,激活按钮本身位于顶部以保持在同一位置。
"move to top" 位于底部。
活动线悬停
当前光标行的样式为p:hover: #color
。
部分和持续时间显示
右侧显示 "section or folder name" 和 "duration"。
两者都是基于以下标记的跨度:
travis_time:start:0759cab0
命令
travis_time:end:0759cab0:start=1434311411734827664,finish=1434311413318517466, duration=1583689802
But, my question is, are there any libraries out there that would make building something like this easier?
对于小型网站,您可以使用基于 Javascript 的主题化 CodeEditor,例如 CodeMirror。
应用深色主题,添加一些代码折叠和代码高亮、活动行悬停的自定义规则。这会让你很快就很接近。
第一次看到 Travis CI 实时更新构建控制台日志时,我承认,给我留下了深刻的印象。而且我知道,通过一些非常耗时的 CSS 样式和 JS 编码,我可能会得到一半好的东西。但是,我的问题是,是否有任何库可以使构建这样的东西更容易?我知道 Travis CI 使用 Ember 作为他们的网络应用程序框架,但我猜这不是 Ember 的组件,对吧?
"travis-web" 使用 Ember,但 "log-container" 的功能是自定义的。它包含日志文件的文本 ("Download Log")。请下载日志的原始版本并查看。
你会看到,日志文件有几个"annotations"。它是一种指示应用某些自定义样式的区域的语法。 这些行由 Log script 处理,然后删除。
好吧,我们来分解一下:
► 代码折叠
折叠以 "travis_fold:start:section_name"
开始并以 "travis_fold:end:section_name"
折叠内的内容放置在一个跨度中。 默认情况下,跨度高度为 0。最初不显示内容。
单击时,额外的 css 样式 open
将添加到跨度中。
样式 open
将 span 元素的 height
设置为 auto
- 折叠的内容将显示出来。
行号://url#L100
注释已从日志文件内容中删除
(total number of lines = raw log file lines - annotation lines
).
所有行号都是锚元素(a
),因此可以进行逐行引用。
编号本身由 CSS 完成 - 数字添加在锚点之前。
log-body p a::before {
content: counter(line-numbering);
counter-increment: line-numbering;
颜色
整个原始日志文件都使用了 ansi 颜色代码。 内容由 AnsiParser script 解析,颜色代码被转换(deansi'ed)为它们的 css-class 颜色名称。
字符串
[0K[33;1mBuild system information[0m
变成
<span id="1-3" class="yellow bold">Build system information</span>
滚动到日志末尾并移至顶部
滚动到日志结尾类似于滚动到 div 的结尾:this.scrollIntoView(false);
激活滚动时,激活按钮本身位于顶部以保持在同一位置。
"move to top" 位于底部。
活动线悬停
当前光标行的样式为p:hover: #color
。
部分和持续时间显示
右侧显示 "section or folder name" 和 "duration"。 两者都是基于以下标记的跨度:
travis_time:start:0759cab0
命令
travis_time:end:0759cab0:start=1434311411734827664,finish=1434311413318517466, duration=1583689802
But, my question is, are there any libraries out there that would make building something like this easier?
对于小型网站,您可以使用基于 Javascript 的主题化 CodeEditor,例如 CodeMirror。
应用深色主题,添加一些代码折叠和代码高亮、活动行悬停的自定义规则。这会让你很快就很接近。