Keystone 现在看起来已经过时了,我建议您看看 Astro 或 Vite。
Keystone 是一款静态站点生成器,非常适合快速构建小型网站。无需设置,默认情况下会启用一系列方便的功能。
/public
即可开始创建一个新目录并运行以下命令来设置 Keystone、package.json 和 git。需要节点 14.xx。
$ npm install keystone-ssg
太棒了,你已经安装好了!
启动 Keystone 开发服务器,然后访问 http://localhost:8080 查看示例网站。
$ npm run dev
运行命令后,项目将在/public
文件夹中构建,准备上传。
$ npm run build
Keystone 项目中有六个重要的目录,每个目录都有自己的用途:
页面文件夹中的每个 HTML .html
和 markdown .md
文件都对应于您网站上的一个页面。这里的示例项目中有两个文件,尝试打开index.html
。自动路由将在运行npm run build
时将文件捆绑到/public
文件夹,如下所示:
/pages/index.html -> /public/index.html
/pages/example.md -> /public/example/index.html
您可能已经注意到, index.html
具有以下标记: <_template basic.html />
。这会将index.html
的内容放置在位于/templates/basic.html
的开槽模板文件中。这种自定义 HTML 标记格式也适用于.md
文件。
模板可以与/pages
一起使用,为您的页面提供现成的框架。在模板文件中使用<_slot />
标记为您的内容提供入口点。打开/templates/basic.html
并查找:
< _var title default="Keystone default title" />
这是模板文件中名为title
的变量槽,具有可选的默认值。
使用以下内容作为/pages
内的模板标签将允许您从内容页面将自定义值输入到模板中:
< _template basic.html title="A custom title" />
/components
夹仅用于可重用组件。 <_import>
标签用于将组件导入到其他 HTML 文件中,其中的一个示例位于/templates/basic.html
中。
< _import header.html />
在首先捆绑源代码之后, <_import>
标签还可以用于导入任何其他类型的文件(JS、SCSS 等)的内容。
将 Javascript 文件放置在/src
文件夹中。以下标签将转换为常规<script>
导入标签,链接到您的文件/src/main.js
:
< _script main.js />
完全支持 ES6 导入,生成的文件将使用 Babel 进行转译,与 Rollup 捆绑并缩小。
/styles
文件夹用于您的 CSS/SCSS。以下标记将转换为常规<link>
css 导入标记,链接到已编译的/styles/main.scss
文件:
< _style main.scss />
完全支持所有node-sass
功能,包括@import
。
静态资源放置在这里,即字体、图像、图标。这里的所有内容都会转移到根目录中相应的文件夹中,例如:
/assets/favicon.ico -> /public/favicon.ico
/assets/fonts/fontname.ttf -> /public/fonts/fontname.ttf
<_template src='myfolder/myfile.html' />
。package.json
的文件夹,除非您想访问项目外部的文件,否则不要使用开头的斜杠。.keystone-page-loading
类将设置为display: block
。如果该类在 CSS 中设置为display: none
,则可以使用它来创建加载指示器。search.json
。这是一个 JSON 数组,其中包含每个页面的对象,列出页面的文本内容、标题和路径。public
文件夹被 Git 忽略,如果您希望使用公共行将其提交到 Git,请从.gitignore
中删除public
行。 package.json
中的版本号替换为您要更新到的版本,然后运行npm install keystone-ssg
,以进行快速升级。标签 | 描述 | 属性 |
---|---|---|
<_template> | 将当前文件导入到模板文件中的<_slot> 中 | [文件名],[变量名],src |
<_slot> | 在模板文件中用作导入文件的入口点 | 没有任何 |
<_var> | 在模板文件中使用,替换为取自<_template> 的变量 | [变量名称],默认 |
<_import> | 导入一个组件 | [文件名],src |
<_script> | 创建链接到捆绑脚本的<script> 标记 | [文件名],src |
<_style> | 创建一个链接到捆绑的 css 文件的<link> 标签 | [文件名],src |
命令 | 描述 | 输出差异 |
---|---|---|
npm run dev | 构建用于开发的网站,然后启动 Keystone 开发服务器。 |
|
npm run build | 构建用于生产的网站。 |
|
配置文件是keystone.config.js
选项 | 描述 | 默认 |
---|---|---|
动态链接 | 在您的 Keystone 网站上启用动态加载的本地链接,无需刷新 | 真的 |
搜索文件 | 在根目录生成search.json | 真的 |
索引路径 | 您网站的根目录 | '/' |
港口 | 开发服务器端口,本地主机: 8080 | 8080 |
端口Ws | 用于开发服务器的第二个端口 | 8081 |
开发服务器IP | 开发服务器的位置,本地主机:8080。替换为您设备的本地 IP 以查看本地设备上的开发服务器(例如:“192.168.1.103”)。 | '本地主机' |
看过 | Keystone 开发服务器监视的目录,在编辑文件时将强制重新编译和页面刷新 | ['模板'、'页面'、'资产'、'组件'、'src'、'样式'] |
建造 | 内容页面目录 | “页面” |
服务 | 包含生成的网站的目录 | '民众' |
完全重新编译 | 在开发模式下每次文件更改后强制完全重新编译所有文件 | 错误的 |
| empty-keystone-project
--| .git/
--| assets/
--| components/
--| pages/
--| src/
--| styles/
--| templates/
--| keystone.config.js
--| package.json
--| package-lock.json
如果安装并运行示例后出现 PLUGIN_ERROR,这是 Babel 问题,请运行以下命令来修复它:
npm install @babel/core @babel/preset-env --save-dev