脚本

将 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");