npm 包 metalsmith-permalinks 使用教程

阅读时长 4 分钟读完

在前端开发中,构建工具是必不可少的一部分。Metalsmith 是一个简单而灵活的静态网站生成器,它可以用于处理各种文件类型,并通过插件机制来扩展其功能。其中,metalsmith-permalinks 是一个常用的插件,可以为每个页面生成自定义链接。

安装

首先,在项目目录下使用以下命令安装 Metalsmith 和 metalsmith-permalinks:

使用

安装成功后,在项目根目录创建一个 metalsmith.js 文件,并添加如下配置:

-- -------------------- ---- -------
----- ---------- - ----------------------
----- ---------- - ---------------------------------

---------------------
  ---------------- -- ------
  ----------------------- -- -------
  ------------ -- ---------
  -----------------
    -------- ---------
  ---
  -------------------- -
    -- ----- ----- ----
    ------------------ -----------
  ---

以上代码中,我们首先引入了 metalsmithmetalsmith-permalinks 两个模块,并创建了一个新的 metalsmith 实例。然后,我们设置了源文件夹和目标文件夹的路径,并设置了是否清空目标文件夹。最后,我们使用了 metalsmith-permalinks 插件,并传入一个对象,其中包含了自定义链接的格式。

在这个例子中,我们使用了 :title 作为链接格式,这意味着每个页面的 URL 将基于其文件名。例如,如果我们有一个名为 hello-world.md 的文件,它将生成一个链接 /hello-world.html

自定义链接格式

除了使用文件名作为链接格式之外,我们还可以使用其他元数据(metadata)或者日期作为格式。以下是一些常见的链接格式:

  • :title:文件名
  • :date:文件创建日期,格式为 YYYY-MM-DD
  • :year:文件创建年份,格式为 YYYY
  • :month:文件创建月份,格式为 MM
  • :day:文件创建日期,格式为 DD
  • :slug:文件名的 slug 版本,即去掉了空格和标点符号的文件名
  • :categories:文件所属分类,多级之间使用 / 分隔
  • :tags:文件所属标签,多个之间使用 , 分隔

例如,我们可以将链接格式设置为 :categories/:slug/index.html,这样每个页面的链接将基于其分类和 slug。如果一个页面的分类为 blog,文件名为 my-first-post.md,那么它将生成一个链接 /blog/my-first-post/index.html

示例代码

以下是一个示例项目,使用 Metalsmith 和 metalsmith-permalinks 构建静态网站:

-- -------------------- ---- -------
--------
--- ----
-   --- --------
-   --- -----
-   -   --- --------------
-   -   --- ----------------
-   --- --------
--- ------
--- -------------
--- ------------
-- -------------------- ---- -------
-- -------------

----- ---------- - ----------------------
----- ---------- - ---------------------------------

---------------------
  ----------------
  -----------------------
  ------------
  -----------------
    -------- -------------------------------
  ---
  -------------------- -
    -- ----- ----- ----
    ------------------ -----------
  ---
-- -------------------- ---- -------
-- ------------

-
  ------- ----------
  ---------- -
    -------- ----- --------------
  --
  --------------- ---
  ------------------ -
    ------------- ---------
    -------

- ----------------------------------------------------------- --------
----------------------------------------------------------------------------------
纠错
反馈