#blog #site #specialized #human #static-site-generator #version #article

app salmon

(alpha版本) 专为博客设计的静态网站生成器,适用于兔子。不适用于人类。

4个版本 (2个破坏性版本)

0.5.0 2019年6月23日
0.4.1 2019年6月16日
0.4.0 2019年6月2日
0.1.0 2019年5月3日

#16 in #specialized

自定义许可

140KB
2K SLoC

Rust 1.5K SLoC // 0.0% comments Handlebars 232 SLoC Ruby 25 SLoC

Salmon

CircleCI

一个专为博客设计的静态网站生成器,适用于兔子。不适用于人类。

安装

您可以使用Docker快速尝试。

docker pull mozamimy/salmon:latest
docker run --rm salmon /usr/local/sbin/salmon --help

二进制文件

GitHub发行版页面下载二进制文件。支持Linux和macOS。

Cargo

如果您是Rust程序员,可以使用cargo命令安装。

cargo install salmon

用法

初始化Salmon项目

执行salmon init命令。然后,在项目目录中生成一些示例文件。

$ salmon init usagi
[2019-06-23T09:28:02Z INFO  salmon::initializer] Writing /articles/2019/06/23/example.md
[2019-06-23T09:28:02Z INFO  salmon::initializer] Writing /codes/2019/06/23/example.rb
[2019-06-23T09:28:02Z INFO  salmon::initializer] Writing /layouts/article.hbs
[2019-06-23T09:28:02Z INFO  salmon::initializer] Writing /layouts/index.hbs
[2019-06-23T09:28:02Z INFO  salmon::initializer] Writing /layouts/page.hbs
[2019-06-23T09:28:02Z INFO  salmon::initializer] Writing /layouts/rss.hbs
[2019-06-23T09:28:02Z INFO  salmon::initializer] Writing /layouts/tag.hbs
[2019-06-23T09:28:02Z INFO  salmon::initializer] Writing /layouts/year.hbs
[2019-06-23T09:28:02Z INFO  salmon::initializer] Writing /pages/example.md
[2019-06-23T09:28:02Z INFO  salmon::initializer] Writing /partials/header.hbs
[2019-06-23T09:28:02Z INFO  salmon::initializer] Writing /partials/menu.hbs
[2019-06-23T09:28:02Z INFO  salmon::initializer] Writing /resources/images/sushi_salmon.png
[2019-06-23T09:28:02Z INFO  salmon::initializer] Writing /resources/stylesheets/layout.sass
[2019-06-23T09:28:02Z INFO  salmon::initializer] Writing /salmon.yaml
[2019-06-23T09:28:02Z INFO  salmon::initializer] Writing /docker-compose.yaml
[2019-06-23T09:28:02Z INFO  salmon::initializer] Your new Salmon project has been initialized!
[2019-06-23T09:28:02Z INFO  salmon::initializer] Now you can build with `salmon build` command after moved the pr
oject directory.
[2019-06-23T09:28:02Z INFO  salmon::initializer] Execute `docker-compose up nginx` if you want to open your site
in https://127.0.0.1:10080/.

您可以使用salmon build命令构建新项目。

$ cd usagi/
$ salmon build
[2019-06-23T09:28:14Z INFO  salmon::layout] Start to load layout files.
[2019-06-23T09:28:14Z INFO  salmon::layout] Loading a layout: "/home/mozamimy/tmp/usagi/layouts/index.hbs"
[2019-06-23T09:28:14Z INFO  salmon::layout] Loading a layout: "/home/mozamimy/tmp/usagi/layouts/article.hbs"
[2019-06-23T09:28:14Z INFO  salmon::layout] Loading a layout: "/home/mozamimy/tmp/usagi/layouts/tag.hbs"
[2019-06-23T09:28:14Z INFO  salmon::layout] Loading a layout: "/home/mozamimy/tmp/usagi/layouts/year.hbs"
[2019-06-23T09:28:14Z INFO  salmon::layout] Loading a layout: "/home/mozamimy/tmp/usagi/layouts/page.hbs"
[2019-06-23T09:28:14Z INFO  salmon::layout] Loading a layout: "/home/mozamimy/tmp/usagi/layouts/rss.hbs"
[2019-06-23T09:28:14Z INFO  salmon::partial] Loading a partial file: "/home/mozamimy/tmp/usagi/partials/header.h$
s"
[2019-06-23T09:28:14Z INFO  salmon::partial] Loading a partial file: "/home/mozamimy/tmp/usagi/partials/menu.hbs

生成的docker-compose.yaml可以帮助您使用Web浏览器打开第一个项目(https://127.0.0.1:10080/)。

$ docker-compose up nginx

使用salmon new命令创建新文章模板和目录

您可以使用salmon new命令快速开始写作。这将创建文章模板和用于代码和图像的目录。

$ salmon new awesome_article
[2019-06-02T08:10:16Z INFO  salmon::template_generator] Created a directory "./articles/2019/06/02"
[2019-06-02T08:10:16Z INFO  salmon::template_generator] Wrote an article template to "./articles/2019/06/02/awesome_article.md"
[2019-06-02T08:10:16Z INFO  salmon::template_generator] Created a directory "./codes/2019/06/02"
[2019-06-02T08:10:16Z INFO  salmon::template_generator] Created a directory "./resources/images/2019/06/02"

请参阅salmon new --help以控制行为。如果没有选项,Salmon将创建所有模板和目录。

日志

您可以通过RUST_LOG环境变量来控制日志级别。默认值是info

配置

您应该在项目根目录中放置YAML配置文件。

version: '1' # required
blog: # required
  site_root: 'https://example.com/', # required
  index_page: # optional
    entries_per_page: 10 # optional
  year_page: # optional
    entries_per_page: 15 # optional
  tag_page: # optional
    entries_per_page: 15 # optional

(待定)

许可

MIT

依赖项

~15–26MB
~397K SLoC