脚本
将 Lume 用作脚本运行器的指南
Lume 包含一个简单的脚本运行器,你可以用它来执行命令或自定义函数。要创建一个新的脚本,请在你的 _config.js
文件中使用 script()
函数:
site.script("deploy", "rsync -r _site/** user@server.com:/var/www/");
现在,你可以通过 CLI 使用 lume run deploy
运行这个脚本。
运行多个命令
你可以创建一个脚本来执行多个命令,一个接一个地。有两种方式可以做到这一点:添加更多参数,或者用 &&
连接不同的命令。例如:
site.script(
"save-site",
"gzip -r _site site.gz",
"scp site.gz user@host.com:/home/user/archive",
);
// 另一种使用 "&&" 的方式
site.script(
"save-site",
"gzip -r _site site.gz && scp site.gz user@host.com:/home/user/archive",
);
现在,通过运行 lume run save-site
,这两个命令将会被执行。
如果你不需要按顺序执行命令,而是并行执行,可以使用命令数组或字符 &
:
site.script(
"compress-assets",
[
"gzip -r _site/images images.gz",
"gzip -r _site/videos videos.gz",
],
);
// 另一种使用字符 "&" 的方式
site.script(
"compress-assets",
"gzip -r _site/images images.gz & gzip -r _site/videos videos.gz",
);
组合脚本
脚本可以执行其他脚本:只需在一个脚本中将已注册的脚本名称用作命令即可。例如:
// 创建两个脚本
site.script("compress", "gzip -r _site site.gz");
site.script("upload", "scp site.gz user@host.com:/home/user/archive");
// 创建第三个脚本来运行前两个脚本
site.script("compress-and-upload", "compress", "upload");
自定义函数
脚本不仅可以执行 CLI 命令,还可以执行 JavaScript 函数。例如:
site.script("add-date-published", () => {
Deno.writeTextFileSync(
site.dest("published.txt"),
`Site published at: ${Date.now()}`,
);
});
从 JavaScript 运行脚本
要从 JavaScript 而不是 CLI 运行脚本,请使用 site.run()
函数:
// 创建脚本
site.script("compress", "gzip -r _site site.gz");
// 运行它
site.run("compress");