快速开始
安装
手动下载
下载 👉 道盒发布 命令行工具,解压缩后,将可执行文件 everkm-publish
放到 PATH
变量设定的搜索目录中,即可在命令行下运行。
Mac Brew 安装
brew install everkm/tap/everkm-publish
Npm / Pnpm 安装
pnpm add everkm-publish
通常用于自定义模板开发。
创建工作区
# 在当前目录创建工作区
everkm-publish create <base name>
--theme
可选。指定样式名称。默认为yilog
。
启动本地预览
-
启动预览
# 切换到Base目录 cd <base dir> # 启动预览环境 everkm-publish serve --theme <your theme>
用浏览器打开 http://localhost:9081 (默认监听地址) 可预览。
-
编辑
<base>/content/post/
目录下的 Markdown 文件。 -
导出静态文件
everkm-publish serve --theme <your theme> --export
目录结构
.
├── __everkm
│ ├── everkm.yaml
│ └── theme
│ ├── dev
│ └── yilog
│ ├── assets-manifest.json
│ ├── everkm-theme.yaml
│ ├── everkm.yaml.sample
│ ├── img-manifest.json
│ └── templates
├── __public
│ └── vercel.json
├── <contents and directories>
目录说明:
__everkm/everkm.yaml
: 项目配置文件__everkm/theme
: 存放模板主题目录,每个主题一个单独的目录__everkm/theme/dev
: 开发模板时的打包目录__everkm/theme/<yilog>
: 安装的模板__everkm/__public
: 存储独立的资源,发布时,原样复制到发布目录__everkm/__assets
: 存储独立的静态资源,发布时,原样复制到assets
目录<contents or directories>
: 内容与目录。_
打头的目录或文件,posts
函数会忽略
工作区配置文件
文件名: everkm.yaml
设置渲染的结构、模板及参数,优先级高于 everkm-theme.yaml
。
config:
timezone: Asia/Chongqing
site:
name: Everkm
sitemap:
channel_name: "{{t(text='Home')}}"
children:
- path: blog/
channel_name: "{{t(text='Blog')}}"
channel_path: blog/
qs:
dir: /blog/
__tpl: /list.html
no_dir: true
category_url_base: /blog/category/
page_size: 10
- path: changelog.html
channel_name: "{{t(text='Changelog')}}"
qs:
__tpl: /details.html
no_dir: true
no_time: true
map_url:
- dir: /blog/**
url: /blog/{{year}}/{{slug}}.html
- dir: /docs/**
url: /docs/{{slug}}.html
config
字段
config
工作区配置,在模板中通过全局变量__config
获取config.timezone
工作区时区,默认值Asia/Chongqing
config.default_lang
默认语言翻译环境, 默认值en_US
map_url
字段
map_url
用于通过文件路径生成对应的 URLmap_url.dir
路径通配符map_url.url
对应的 URL Path。
支持以下占位符, 使用{{}}
包裹。slug
文件 Slugyear
文件创建年份month
文件创建月份day
文件创建 day
sitemap
字段
sitemap
覆盖everkm-theme.yaml
中的sitemap
配置sitemap
设置站点结构。所有的字段值支持模板语法,sitemap.path
Url Path 通配符, 省略默认为/
。当以/
结尾时,表示目录下的所有文件,但不包含孙级后代文件。 如:blog/
等同于blog/*
sitemap.channel_name
栏目名称,用于面包屑导航,省略时忽略此段sitemap.channel_path
栏目 URL 片段,用于面包屑导航,省略时使用path
属性,如果有通配符则报错。sitemap.qs
渲染模板时的上下文参数,通过全局变量__qs
获取sitemap.qs.__tpl
默认采用的模板路径sitemap.qs.*
其他自定义参数sitemap.children[]
子路径,类型同sitemap
预览导出
渲染导出所有页面
everkm-publish serve --export
everkm-publish 会从入口地址开始,抓取其内容,并按 URL Path 部分保存为文件,同时跟踪抓取内容的其它链接, 符合指定规则时,继续抓取,直至全部导出完成。除了导出页面内容外,还将包括文章中引用的图片,音频,视频,以及其它文档附件。 不会导出未被引用的资源。
特殊目录
如果需要某些未被引用的文件一起发布时,需要将其放入以下特殊目录。
__assets
: 发布时复制到静态资源assets
目录。主要针对页面附属的资源文件。__public
: 发布时复制到内容页面目录。
注意:当目标文件存在时,会被覆盖写入。
详细命令参数
Preview / Export
Usage: everkm-publish serve [OPTIONS]
Options:
--work-dir <WORK_DIR>
Working directory
[env: EVERKM_WORK_DIR=]
[default: ./]
--dev-dir <DEV_DIR>
Development directory
Priority over work_dir
[env: EVERKM_DEV_DIR=]
--dist-dir <DIST_DIR>
Export directory
[env: EVERKM_DIST_DIR=]
--theme <THEME>
Name of theme
[env: EVERKM_THEME=]
[default: dev]
--cdn-prefix <CDN_PREFIX>
CDN's prefix of assets
[env: EVERKM_CDN_PREFIX=]
--lang <LANG>
Language code
[env: EVERKM_LANG=]
--base-prefix <BASE_PREFIX>
Context base of url
[env: EVERKM_BASE_PREFIX=]
[default: ]
--listen <LISTEN>
Listening address
[env: EVERKM_LISTEN=]
[default: 127.0.0.1:9081]
-e, --export
As export mode
--start-urls <START_URLS>
A list of exported entry addresses. Multiple are separated by
spaces.
Default: `/index.html`
[env: EVERKM_START_URLS=]
--stop-urls <STOP_URLS>
A list of address prefixes to ignore. Multiple are separated by
spaces
[env: EVERKM_STOP_URLS=]
-h, --help
Print help (see a summary with '-h')