Noflo-Jekyll
基于流量的jekyll静态站点生成器的重新实现。这为Node.js,尤其是NOFLO开发人员提供了一些优势:
- 纯JavaScript ,在您的环境中不需要Ruby或其他运行时间。如果您将Grunt用于现场生成,特别是方便的
- 其他数据源,在noflo中,一切都只是数据流。您可以轻松地插入其他数据源。例如,数据库查询结果
- 不同的转换器,不想使用Markdown?只需插入您自己的标记处理器组件
- 不同的模板引擎不想使用液体?只需插入您自己的模板处理器组件
- 用作库或可执行文件,此Jekyll实现只是一个NOFLO图。您可以在其他noflo应用程序中使用它,作为node.js模块,也可以用作命令行可执行文件
但是,与积极开发的应用程序的任何重新实现一样,还有一些潜在的警告需要观察。
结构
noflo jekyll已作为NOFLO图实现。大多数逻辑都由各种现有的NOFLO组件来处理,但是在某些地方,将事物作为自定义组件有意义。但是,超过85%的代码库是完全可重复使用的。
这是使用noflo ui可视化时的主要流程:
您可以从图形文件夹中找到主流量和不同的子图。
安装
如果要将其用作命令行可执行文件,那么最简单的选项是用以下方式在全球安装它。
$ npm install -g noflo-jekyll
如果要将其用作较大应用程序中的库,则只需将其作为依赖项安装:
$ npm install noflo-jekyll --save
命令行的用法
由于该项目的目的是与Jekyll的功能均衡,因此命令行的使用情况相似。要生成一个站点,请运行:
$ noflo-jekyll source_dir target_dir
在node.js应用程序中使用
站点生成图也可以用作Node.js应用程序中的库。
var Jekyll , generator ; Jekyll = require ( \'noflo-jekyll\' ) . Jekyll ; // Prepare the site generator generator = new Jekyll ( \'source_dir\' , \'target_dir\' ) ; // Event handling generator . on ( \'start\' , function ( ) { console . log ( \"Build started\" ) ; } ) ; generator . on ( \'error\' , console . error ) ; generator . on ( \'end\' , function ( end ) { var seconds = end . uptime / 1000 ; console . log ( \"Build finished in \" + seconds ) ; } ) ; // Start the process generator . run ( ) ;
在NOFLO图中使用
主要的站点生成流程为jekyll/Jekyll图。这是在另一个图中使用它的一个简单示例:
# Directory setup
\'/some/source/directory\' -> SOURCE Generator(jekyll/Jekyll)
\'/some/target/directory\' -> DESTINATION Generator()
# Outputs
Generator() GENERATED -> IN Drop(Drop)
Generator() ERRORS -> IN Display(Output)
Ruby Jekyll的已知问题和差异
模板不兼容
我们使用的液体模板库不覆盖液体规格的100%,因此与Jekyll一起使用的某些模板参数可能尚不正常。
我们正在与液体节点开发人员合作以改善覆盖范围,这也是您可以提供帮助的。如果您使用的是不起作用的问题,请报告一个问题!
较新的Jekyll功能
当这个项目开始时,杰基尔仍处于1.0之前的阶段,其发展已经停止。从那时起,它的开发恢复了,1.0添加了我们尚未提供的功能。其中包括:
- 草稿职位
- 时带
- baseurl
请报告您遇到这些或其他Jekyll功能的任何问题。
没有Web服务器
Ruby Jekyll包含用于测试目的的基本Web服务器。由于这超出了静态站点生成的范围,因此noflo jekyll实施中未包含此功能。您可以在许多方面使用生成的页面,包括Grunt-Contrib-Connect,Simple-Server或Noflo Web服务器。
测试和开发
欢迎任何丢失的Jekyll功能或其他问题的拉动请求!如果您想与存储库一起工作,最好能够在本地进行测试。
我们的主体测试由jekyll网站源组成,该网站源是我们使用Ruby Jekyll生成静态站点的test/fixtures/source 。我们通过相同来源运行noflo jekyll ,并检查结果是否相同(除了某些空格差异外)。
如果您发现noflo jekyll无法正确处理的东西,请将它们添加到该jekyll站点源,然后使用以下方式运行Ruby Jekyll固定装置。
$ grunt jekyll
此后,您应该能够使用以下方式进行测试:
$ grunt test
