国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
關(guān)鍵要點
為什麼選擇 Metalsmith?
安裝 Metalsmith
項目結(jié)構(gòu)
頁面
模板
部分
靜態(tài)資產(chǎn)
自定義插件
構(gòu)建目錄
定義您的第一個構(gòu)建文件
Metalsmith 插件
製作更好的構(gòu)建
需要注意的地方
不兼容的插件
插件順序至關(guān)重要
Browsersync 重新構(gòu)建問題
您是否仍然需要 Gulp?
Metalsmith 適合您嗎?
關(guān)於使用 Metalsmith 創(chuàng)建靜態(tài)網(wǎng)站的常見問題
什麼是 Metalsmith,為什麼我應(yīng)該使用它來創(chuàng)建靜態(tài)網(wǎng)站?
如何安裝 Metalsmith?
如何創(chuàng)建一個新的 Metalsmith 項目?
如何在我的 Metalsmith 項目中添加插件?
如何構(gòu)建我的 Metalsmith 網(wǎng)站?
如何自定義我的 Metalsmith 網(wǎng)站的佈局?
如何在我的 Metalsmith 網(wǎng)站中添加內(nèi)容?
如何部署我的 Metalsmith 網(wǎng)站?
如何更新我的 Metalsmith 網(wǎng)站?
我可以將 Metalsmith 用於大型複雜網(wǎng)站嗎?
首頁 web前端 js教程 如何使用金屬史密斯創(chuàng)建靜態(tài)站點

如何使用金屬史密斯創(chuàng)建靜態(tài)站點

Feb 18, 2025 am 09:00 AM

How to Create a Static Site with Metalsmith

之前文章探討了是否應(yīng)該使用靜態(tài)網(wǎng)站生成器的理由。簡而言之,靜態(tài)網(wǎng)站生成器從模板和原始數(shù)據(jù)(通常包含在 Markdown 文件中)構(gòu)建僅包含 HTML 的頁面文件。它提供了一些 CMS 的好處,而沒有託管、性能和安全方面的開銷。

靜態(tài)網(wǎng)站可能適合各種項目,包括:

  • 小型網(wǎng)站或個人博客。擁有幾十個頁面、不頻繁的帖子和一兩個作者的網(wǎng)站可能是理想的選擇。
  • 技術(shù)文檔,例如 REST API。
  • 需要一系列網(wǎng)頁視圖的應(yīng)用程序原型。
  • 電子書——Markdown 文件可以轉(zhuǎn)換為 PDF 或其他格式以及 HTML。

本質(zhì)上,靜態(tài)網(wǎng)站生成器是一個構(gòu)建工具。您可以像使用 Grunt 或 Gulp 一樣,使用它來運行任務(wù)或項目腳手架。

關(guān)鍵要點

  • Metalsmith 是一款靈活的可插入靜態(tài)網(wǎng)站生成器,非常適合創(chuàng)建輕量級網(wǎng)站,而無需傳統(tǒng) CMS 的開銷。
  • Metalsmith 的安裝和設(shè)置需要 Node.js,此過程涉及初始化新的項目目錄並通過 npm 安裝必要的插件。
  • Metalsmith 中的項目結(jié)構(gòu)涉及組織源文件、模板和資產(chǎn),並明確區(qū)分開發(fā)和生產(chǎn)構(gòu)建。
  • Metalsmith 利用各種插件來擴展功能,例如處理 Markdown 文件、創(chuàng)建 RSS 提要和生成站點地圖,這些都配置在構(gòu)建文件中。
  • 可以創(chuàng)建自定義插件來處理特定任務(wù),例如設(shè)置元數(shù)據(jù)或添加調(diào)試信息,從而增強 Metalsmith 在管理網(wǎng)站內(nèi)容和結(jié)構(gòu)方面的多功能性。
  • Metalsmith 的構(gòu)建過程可以與 Gulp 等任務(wù)運行器集成,以應(yīng)對更複雜的場景,儘管對於更簡單的流程,Metalsmith 本身就足夠了。

為什麼選擇 Metalsmith?

無可爭議的靜態(tài)網(wǎng)站冠軍是 Jekyll——一個 2008 年啟動的 Ruby 項目。您不一定需要 Ruby 專業(yè)知識來使用 Jekyll,但這會有所幫助。幸運的是,大多數(shù)流行語言都有各種各樣的開源靜態(tài)網(wǎng)站生成器。 JavaScript 選項包括 Hexo、Harp 和 Assemble。對於更簡單的項目,您也可以使用 Gulp 等構(gòu)建工具。

我選擇 Metalsmith 用於本教程是因為它:

  1. 不針對特定類型的項目(例如博客)
  2. 支持各種模板和數(shù)據(jù)格式選項
  3. 輕量級
  4. 依賴項很少
  5. 使用模塊化結(jié)構(gòu)
  6. 提供簡單的插件架構(gòu),以及
  7. 易於上手。

本教程已經(jīng)構(gòu)建了一個演示網(wǎng)站。它不會贏得任何設(shè)計獎項,但它說明了基本概念。 Metalsmith 構(gòu)建代碼可以從 GitHub 存儲庫中檢查和安裝。或者,您可以按照此處的說明操作並創(chuàng)建您自己的基本站點。

我已經(jīng)使用過幾次 Metalsmith 了——請不要認為這是構(gòu)建每個靜態(tài)網(wǎng)站的最終方法!

安裝 Metalsmith

確保您已安裝 Node.js(例如使用 nvm),然後創(chuàng)建一個新的項目目錄,例如 project 並初始化您的 package.json 文件:

<code>cd project && cd project
npm init -y
</code>

現(xiàn)在安裝 Metalsmith 和我們將用於構(gòu)建站點的各種插件。這些是:

  • metalsmith-assets — 在您的 Metalsmith 構(gòu)建中包含靜態(tài)資產(chǎn)
  • metalsmith-browser-sync — 將 BrowserSync 集成到您的工作流程中
  • metalsmith-collections — 將文件集合添加到全局元數(shù)據(jù)
  • metalsmith-feed — 為集合生成 RSS 提要
  • metalsmith-html-minifier — 使用 kangax/html-minifier 壓縮 HTML 文件
  • metalsmith-in-place — 在源文件中呈現(xiàn)模板語法
  • metalsmith-layouts — 將佈局應(yīng)用於您的源文件
  • metalsmith-mapsite — 生成 sitemap.xml 文件
  • metalsmith-markdown — 轉(zhuǎn)換 Markdown 文件
  • metalsmith-permalinks — 將自定義永久鏈接模式應(yīng)用於文件
  • metalsmith-publish — 支持草稿、私有和未來日期的帖子
  • metalsmith-word-count — 計算 HTML 文件中所有段落的字數(shù)/平均閱讀時間
<code>npm install --save-dev metalsmith metalsmith-assets metalsmith-browser-sync metalsmith-collections metalsmith-feed metalsmith-html-minifier metalsmith-in-place metalsmith-layouts metalsmith-mapsite metalsmith-markdown metalsmith-permalinks metalsmith-publish metalsmith-word-count handlebars
</code>

項目結(jié)構(gòu)

我們將在項目中使用以下結(jié)構(gòu)作為源 (src) 和構(gòu)建 (build) 目錄。

您可以按照以下說明創(chuàng)建示例文件,也可以直接從演示 src 目錄複製它們。

頁面

頁面 Markdown 文件包含在 src/html 中。這可以包含每個網(wǎng)站部分的一級子目錄,即

  • src/html/start — 按特定順序描述項目的頁面
  • src/html/article — 按反時間順序排列的各種文章
  • src/html/contact — 單個聯(lián)繫頁面

每個目錄包含一個 index.md 文件,它是該部分的默認頁面。其他頁面可以使用任何唯一名稱。

構(gòu)建過程會將這些文件轉(zhuǎn)換為基於目錄的永久鏈接,例如

  • src/html/start/index.md 變成 /start/index.html
  • src/html/start/installation.md 變成 /start/installation/index.html

每個 Markdown 文件都提供內(nèi)容和元信息,稱為“前題”位於 --- 標記之間的頂部,例如

<code>---
title: My page title
description: A description of this page.
layout: page.html
priority: 0.9
date: 2016-04-19
publish: draft
---

This is a demonstration page.

## Example title
Body text.</code>

大多數(shù)前題都是可選的,但您可以設(shè)置:

  • priority:介於 0(低)和 1(高)之間的數(shù)字,我們將使用它來排序菜單和定義 XML 站點地圖。
  • publish:可以設(shè)置為草稿、私有或未來日期,以確保它不會在需要之前發(fā)布。
  • date:文章的日期。如果沒有設(shè)置,我們將使用任何未來的發(fā)布日期或文件創(chuàng)建日期。
  • layout:要使用的 HTML 模板。

模板

HTML 頁面模板包含在 src/template 中。已定義兩個模板:

  • src/html/template/page.html 默認佈局
  • src/html/template/article.md 顯示日期、前後鏈接等的文章佈局

雖然支持其他選項,但使用了 Handlebars 模板系統(tǒng)。典型的模板需要一個 {{{ contents }}} 標記來包含頁面內(nèi)容以及任何前題值,例如 {{ title }}:

<code>cd project && cd project
npm init -y
</code>

對 {{> meta }}、{{> header }} 和 {{> footer }} 的引用是部分……

部分

部分——或 HTML 代碼片段文件——包含在 src/partials 中。這些主要用於模板中,但也可以使用以下代碼包含在內(nèi)容頁面中:

<code>npm install --save-dev metalsmith metalsmith-assets metalsmith-browser-sync metalsmith-collections metalsmith-feed metalsmith-html-minifier metalsmith-in-place metalsmith-layouts metalsmith-mapsite metalsmith-markdown metalsmith-permalinks metalsmith-publish metalsmith-word-count handlebars
</code>

其中 partialname 是 src/partials 目錄中文件的名稱。

靜態(tài)資產(chǎn)

靜態(tài)資產(chǎn)(例如圖像、CSS 和 JavaScript 文件)包含在 src/assets 中。所有文件和子目錄都將按原樣複製到網(wǎng)站的根目錄。

自定義插件

構(gòu)建站點所需的自定義插件包含在 lib 目錄中。

構(gòu)建目錄

網(wǎng)站將在構(gòu)建目錄中構(gòu)建。我們將通過兩種方式構(gòu)建網(wǎng)站:

  • 開發(fā)模式:HTML 不會被壓縮,並且會啟動測試 Web 服務(wù)器。
  • 生產(chǎn)模式:如果 NODE_ENV 設(shè)置為 production,則會清除構(gòu)建目錄並生成最終壓縮的文件。

定義您的第一個構(gòu)建文件

可以在項目目錄的根目錄中創(chuàng)建一個名為 build.js 的基本示例:

<code>---
title: My page title
description: A description of this page.
layout: page.html
priority: 0.9
date: 2016-04-19
publish: draft
---

This is a demonstration page.

## Example title
Body text.</code>

使用 node ./build.js 運行它,一個靜態(tài)網(wǎng)站將在構(gòu)建目錄中創(chuàng)建。 Markdown 將被解析為 HTML,但它不可用,因為我們沒有在構(gòu)建過程中包含模板。

Metalsmith 插件

從表面上看,Metalsmith 構(gòu)建文件看起來類似於 Gulp 中使用的構(gòu)建文件(儘管它不使用流)。通過使用任何適當?shù)膮?shù)將其傳遞給 Metalsmith use 方法來調(diào)用插件。插件本身必須返回另一個函數(shù),該函數(shù)接受三個參數(shù):

  • 一個 files 數(shù)組,包含有關(guān)每個頁面的信息
  • 一個 metalsmith 對象,包含全局信息,例如元數(shù)據(jù),以及
  • 一個 done 函數(shù),在插件完成工作後必須調(diào)用該函數(shù)

這個簡單的示例將所有元數(shù)據(jù)和頁面信息記錄到控制臺(它可以在 build.js 中定義):

<code>
 lang="en">
  >
    {{> meta }}
  >
  >

  {{> header }}

  <main>></main>
    >

      {{#if title}}
        <h1>></h1>{{ title }}>
      {{/if}}

      {{{ contents }}}

    >
  >

  {{> footer }}

>
>
</code>

Metalsmith 構(gòu)建代碼可以更新為使用此插件:

<code>{{> partialname }}</code>

此調(diào)試函數(shù)可以幫助您創(chuàng)建自己的自定義插件,但是您可能需要的絕大多數(shù)功能都已經(jīng)編寫好了——Metalsmith 網(wǎng)站上列出了很長的插件列表。

製作更好的構(gòu)建

下面解釋了演示站點構(gòu)建文件的主要部分。

如果 NODE_ENV 環(huán)境變量已設(shè)置為 production(在 Mac/Linux 上導(dǎo)出 NODE_ENV=production 或在 Windows 上設(shè)置 NODE_ENV=production),則變量 devBuild 將設(shè)置為 true:

<code>cd project && cd project
npm init -y
</code>

主目錄在 dir 對像中定義,以便我們可以重複使用它們:

<code>npm install --save-dev metalsmith metalsmith-assets metalsmith-browser-sync metalsmith-collections metalsmith-feed metalsmith-html-minifier metalsmith-in-place metalsmith-layouts metalsmith-mapsite metalsmith-markdown metalsmith-permalinks metalsmith-publish metalsmith-word-count handlebars
</code>

加載 Metalsmith 和插件模塊。注意:

  • 優(yōu)秀的 Browsersync 測試服務(wù)器僅在創(chuàng)建開發(fā)構(gòu)建時才需要
  • htmlmin 引用的 HTML 壓縮程序模塊僅在創(chuàng)建生產(chǎn)構(gòu)建時才需要
  • 已定義三個自定義插件:setdate、moremeta 和 debug(下面將更詳細地解釋)
<code>---
title: My page title
description: A description of this page.
layout: page.html
priority: 0.9
date: 2016-04-19
publish: draft
---

This is a demonstration page.

## Example title
Body text.</code>

siteMeta 對象使用應(yīng)用於每個頁面的信息定義。重要的值是 domain 和 rootpath,它們根據(jù)開發(fā)或生產(chǎn)構(gòu)建進行設(shè)置:

<code>
 lang="en">
  >
    {{> meta }}
  >
  >

  {{> header }}

  <main>></main>
    >

      {{#if title}}
        <h1>></h1>{{ title }}>
      {{/if}}

      {{{ contents }}}

    >
  >

  {{> footer }}

>
>
</code>

還定義了一個 templateConfig 對象來設(shè)置模板默認值。這將由 metalsmith-in-place 和 metalsmith-layouts 插件使用,它們啟用使用 Handlebars 的頁面內(nèi)和模板渲染:

<code>{{> partialname }}</code>

Metalsmith 對象現(xiàn)在像以前一樣初始化,但我們還將 siteMeta 對像傳遞給 metadata 方法,以確保該信息可用於每個頁面。因此,我們可以在任何頁面中引用諸如 {{ name }} 之類的項目以獲取站點名稱。

<code>// basic build

'use strict';

var
  metalsmith = require('metalsmith'),
  markdown   = require('metalsmith-markdown'),

  ms = metalsmith(__dirname) // the working directory
    .clean(true)            // clean the build directory
    .source('src/html/')    // the page source directory
    .destination('build/')  // the destination directory
    .use(markdown())        // convert markdown to HTML
    .build(function(err) {  // build the site
      if (err) throw err;   // and throw errors
    });
</code>

我們的第一個插件調(diào)用調(diào)用 metalsmith-publish,它刪除任何其前題 publish 值設(shè)置為草稿、私有或未來日期的文件:

<code>function debug(logToConsole) {
  return function(files, metalsmith, done) {
    if (logToConsole) {
      console.log('\nMETADATA:');
      console.log(metalsmith.metadata());

      for (var f in files) {
        console.log('\nFILE:');
        console.log(files[f]);
      }
    }

    done();
  };
};
</code>

setdate 是包含在 lib/metalsmith-setdate.js 中的自定義插件。它確保每個文件都設(shè)置了“date”值,即使在前題中沒有定義任何值,也可以通過盡可能回退到發(fā)布日期或文件創(chuàng)建時間來實現(xiàn):

<code>ms = metalsmith(__dirname) // the working directory
  .clean(true)             // clean the build directory
  .source('src/html/')     // the page source directory
  .destination('build/')   // the destination directory
  .use(markdown())         // convert Markdown to HTML
  .use(debug(true))        // *** NEW *** output debug information
  .build(function(err) {   // build the site
    if (err) throw err;    // and throw errors
  });
</code>

metalsmith-collections 是最重要的插件之一,因為它根據(jù)頁面在源目錄中的位置或其他因素將每個頁面分配給類別或分類法。它可以使用前題(例如日期或優(yōu)先級)重新排序文件,並允許您為該集合設(shè)置自定義元數(shù)據(jù)。代碼定義:

  • src/html/start 目錄中每個文件的 start 集合。它按文件中前題中設(shè)置的優(yōu)先級值對它們進行排序。
  • src/html/article 目錄中每個文件的 article 集合。它按反時間順序?qū)λ鼈冞M行排序
  • 每個名為 index.* 的默認頁面的 page 集合。它按文件中前題中設(shè)置的優(yōu)先級值對它們進行排序。
<code>devBuild = ((process.env.NODE_ENV || '').trim().toLowerCase() !== 'production')
</code>

接下來是 Markdown 到 HTML 的轉(zhuǎn)換,然後是 metalsmith-permalinks 插件,它為構(gòu)建定義了目錄結(jié)構(gòu)。請注意,moremeta 在下面為每個文件設(shè)置了 :mainCollection:

<code>dir = {
  base:   __dirname + '/',
  lib:    __dirname + '/lib/',
  source: './src/',
  dest:   './build/'
}
</code>

metalsmith-word-count 計算文章中的字數(shù)併計算大約需要多長時間才能閱讀。參數(shù) { raw: true } 僅輸出數(shù)字:

<code>metalsmith  = require('metalsmith'),
markdown    = require('metalsmith-markdown'),
publish     = require('metalsmith-publish'),
wordcount   = require("metalsmith-word-count"),
collections = require('metalsmith-collections'),
permalinks  = require('metalsmith-permalinks'),
inplace     = require('metalsmith-in-place'),
layouts     = require('metalsmith-layouts'),
sitemap     = require('metalsmith-mapsite'),
rssfeed     = require('metalsmith-feed'),
assets      = require('metalsmith-assets'),
htmlmin     = devBuild ? null : require('metalsmith-html-minifier'),
browsersync = devBuild ? require('metalsmith-browser-sync') : null,

// custom plugins
setdate     = require(dir.lib + 'metalsmith-setdate'),
moremeta    = require(dir.lib + 'metalsmith-moremeta'),
debug       = consoleLog ? require(dir.lib + 'metalsmith-debug') : null,
</code>

moremeta 是包含在 lib/metalsmith-moremeta.js 中的另一個自定義插件。它將其他元數(shù)據(jù)附加到每個文件:

  • root:到根目錄的絕對或計算出的相對文件路徑
  • isPage:對於名為 index.* 的默認部分頁面設(shè)置為 true
  • mainCollection:主要集合名稱,即 start 或 article
  • layout:如果未設(shè)置,則可以從主集合的元數(shù)據(jù)中確定佈局模板
  • navmain:頂級導(dǎo)航對象的數(shù)組
  • navsub:二級導(dǎo)航對象的數(shù)組

插件代碼比較複雜,因為它處理導(dǎo)航。如果您需要更簡單的層次結(jié)構(gòu),則有更簡單的選項。

<code>cd project && cd project
npm init -y
</code>

metalsmith-in-place 和 metalsmith-layouts 插件分別控制頁面內(nèi)和模板佈局。傳遞上面定義的相同 templateConfig 對象:

<code>npm install --save-dev metalsmith metalsmith-assets metalsmith-browser-sync metalsmith-collections metalsmith-feed metalsmith-html-minifier metalsmith-in-place metalsmith-layouts metalsmith-mapsite metalsmith-markdown metalsmith-permalinks metalsmith-publish metalsmith-word-count handlebars
</code>

如果設(shè)置了 htmlmin(在生產(chǎn)構(gòu)建中),我們可以壓縮 HTML:

<code>---
title: My page title
description: A description of this page.
layout: page.html
priority: 0.9
date: 2016-04-19
publish: draft
---

This is a demonstration page.

## Example title
Body text.</code>

debug 是包含在 lib/metalsmith-debug.js 中的最終自定義插件。它類似於上面描述的 debug 函數(shù):

<code>
 lang="en">
  >
    {{> meta }}
  >
  >

  {{> header }}

  <main>></main>
    >

      {{#if title}}
        <h1>></h1>{{ title }}>
      {{/if}}

      {{{ contents }}}

    >
  >

  {{> footer }}

>
>
</code>

啟動 Browsersync 測試服務(wù)器,以便我們可以測試開發(fā)構(gòu)建。如果您以前沒有使用過它,它看起來就像魔法:每次您進行更改時,您的網(wǎng)站都會神奇地刷新,並且當您滾動或瀏覽網(wǎng)站時,兩個或多個瀏覽器中的視圖會同步:

<code>{{> partialname }}</code>

最後,我們可以使用:

  • metalsmith-mapsite 生成 XML 站點地圖
  • metalsmith-feed 為 article 集合中的頁面生成 RSS 提要
  • metalsmith-assets 直接將 src/assets 中的文件和目錄複製到 build,而無需修改。
<code>// basic build

'use strict';

var
  metalsmith = require('metalsmith'),
  markdown   = require('metalsmith-markdown'),

  ms = metalsmith(__dirname) // the working directory
    .clean(true)            // clean the build directory
    .source('src/html/')    // the page source directory
    .destination('build/')  // the destination directory
    .use(markdown())        // convert markdown to HTML
    .build(function(err) {  // build the site
      if (err) throw err;   // and throw errors
    });
</code>

剩下的就是最後的 .build() 步驟來創(chuàng)建網(wǎng)站:

<code>function debug(logToConsole) {
  return function(files, metalsmith, done) {
    if (logToConsole) {
      console.log('\nMETADATA:');
      console.log(metalsmith.metadata());

      for (var f in files) {
        console.log('\nFILE:');
        console.log(files[f]);
      }
    }

    done();
  };
};
</code>

完成後,您可以再次運行 node ./build.js 來構(gòu)建您的靜態(tài)網(wǎng)站。

需要注意的地方

我在構(gòu)建簡單的 Metalsmith 網(wǎng)站時學到了很多東西,但請注意以下問題:

不兼容的插件

插件可能會與其他插件衝突。例如,計算相對根路徑的 metalsmith-rootpath 與創(chuàng)建自定義構(gòu)建目錄結(jié)構(gòu)的 metalsmith-permalinks 不太兼容。我通過在 lib/metalsmith-moremeta.js 插件中編寫自定義根路徑計算代碼解決了此問題。

插件順序至關(guān)重要

如果插件放置的順序錯誤,則插件可能會相互依賴或衝突。例如,生成 RSS 的 metalsmith-feed 插件必須在 metalsmith-layouts 之後調(diào)用,以確保不會在頁面模板中生成 RSS XML。

Browsersync 重新構(gòu)建問題

當 Browsersync 運行並編輯文件時,集合會被重新解析,但舊數(shù)據(jù)似乎仍然存在。這可能是 lib/metalsmith-moremeta.js 自定義插件的問題,但菜單和前後鏈接可能會不同步。要修復(fù)它,請使用 Ctrl/Cmd C 停止構(gòu)建並重新啟動構(gòu)建。

您是否仍然需要 Gulp?

使用 Gulp 等任務(wù)管理器的人會注意到 Metalsmith 提供了一個熟悉的構(gòu)建過程。有用於使用 Sass 進行 CSS 預(yù)處理、圖像壓縮、文件連接、醜化和更多功能的插件。對於更簡單的流程,它可能就足夠了。

但是,Gulp 具有更廣泛的插件範圍,並允許進行複雜的構(gòu)建活動,例如 lint、部署和使用 auto-prefixer 的 PostCSS 處理。有一些 Gulp/Metalsmith 集成插件,儘管我遇到了一些問題,並且它們不應(yīng)該是必要的,因為 Gulp 任務(wù)可以直接運行 Metalsmith,例如

<code>cd project && cd project
npm init -y
</code>

此過程可以防止上面提到的 Browsersync 重新構(gòu)建問題。請記住使用 .clean(false) 以確保當其他任務(wù)處於活動狀態(tài)時,Metalsmith 永遠不會清除構(gòu)建文件夾。

Metalsmith 適合您嗎?

如果您有簡單或高度定制的網(wǎng)站需求,Metalsmith 是理想的選擇。也許可以嘗試使用文檔項目並一次添加一個功能。 Metalsmith 並不像 Jekyll 等替代方案那樣功能齊全,但它並非旨在如此。您可能需要編寫自己的插件,但這樣做很容易,這對 JavaScript 開發(fā)人員來說是一個巨大的好處。

創(chuàng)建 Metalsmith 構(gòu)建系統(tǒng)需要時間,我們還沒有考慮 HTML 模板和部署所涉及的工作量。但是,一旦您擁有一個可用的流程,添加、編輯和刪除 Markdown 文件就會變得非常簡單。它可能比使用 CMS 更容易,並且您擁有靜態(tài)網(wǎng)站的所有好處。

關(guān)於使用 Metalsmith 創(chuàng)建靜態(tài)網(wǎng)站的常見問題

什麼是 Metalsmith,為什麼我應(yīng)該使用它來創(chuàng)建靜態(tài)網(wǎng)站?

Metalsmith 是一款簡單易用的可插入靜態(tài)網(wǎng)站生成器。它基於 Node.js,並使用模塊化結(jié)構(gòu),允許您通過插件根據(jù)需要添加功能。這使其具有令人難以置信的靈活性和可定制性。您應(yīng)該使用 Metalsmith 創(chuàng)建靜態(tài)網(wǎng)站,因為它允許您完全按照自己的意願構(gòu)建網(wǎng)站,而無需受傳統(tǒng) CMS 的限制。此外,靜態(tài)網(wǎng)站比動態(tài)網(wǎng)站更快、更安全且更易於維護。

如何安裝 Metalsmith?

要安裝 Metalsmith,您需要在計算機上安裝 Node.js 和 npm。安裝這些後,您可以通過在終端中運行命令 npm install metalsmith 來安裝 Metalsmith。這將安裝 Metalsmith 及其所有依賴項。

如何創(chuàng)建一個新的 Metalsmith 項目?

要創(chuàng)建一個新的 Metalsmith 項目,首先在終端中導(dǎo)航到要創(chuàng)建項目的目錄。然後,運行命令 metalsmith 創(chuàng)建一個新項目。這將創(chuàng)建一個新的目錄,其名稱為您的項目名稱,在此目錄內(nèi),它將為您的靜態(tài)網(wǎng)站創(chuàng)建一個基本結(jié)構(gòu)。

如何在我的 Metalsmith 項目中添加插件?

要向您的 Metalsmith 項目添加插件,您需要通過 npm 安裝它們,然後在您的 Metalsmith 配置文件中引用它們。例如,要添加markdown 插件,您首先需要運行npm install metalsmith-markdown,然後在您的配置文件中,您需要添加var markdown = require('metalsmith-markdown'); 並將.use(markdown()) 添加到您的Metalsmith 構(gòu)建鏈中。

如何構(gòu)建我的 Metalsmith 網(wǎng)站?

要構(gòu)建您的 Metalsmith 網(wǎng)站,您需要在終端中運行命令 metalsmith build。這將編譯所有文件並將它們輸出到構(gòu)建目錄,然後您可以將其部署到您的服務(wù)器。

如何自定義我的 Metalsmith 網(wǎng)站的佈局?

要自定義您的 Metalsmith 網(wǎng)站的佈局,您可以使用 Handlebars 或 Jade 等模板引擎。這些允許您為網(wǎng)站的不同部分(如頁眉、頁腳和各個頁面)創(chuàng)建可重用的模板。

如何在我的 Metalsmith 網(wǎng)站中添加內(nèi)容?

要向您的 Metalsmith 網(wǎng)站添加內(nèi)容,您可以在源目錄中創(chuàng)建 markdown 文件。構(gòu)建網(wǎng)站時,這些文件將轉(zhuǎn)換為 HTML。您還可以使用 Netlify CMS 等 CMS 來管理您的內(nèi)容。

如何部署我的 Metalsmith 網(wǎng)站?

要部署您的 Metalsmith 網(wǎng)站,您可以使用 Netlify 或 GitHub Pages 等服務(wù)。這些服務(wù)將託管您的靜態(tài)網(wǎng)站,並在您推送到存儲庫時自動部署更改。

如何更新我的 Metalsmith 網(wǎng)站?

要更新您的 Metalsmith 網(wǎng)站,您只需更改源文件,然後重新構(gòu)建您的網(wǎng)站。更改將反映在構(gòu)建目錄中,然後您可以將其部署到您的服務(wù)器。

我可以將 Metalsmith 用於大型複雜網(wǎng)站嗎?

是的,Metalsmith 具有高度可擴展性,可用於大型複雜網(wǎng)站。其模塊化結(jié)構(gòu)允許您根據(jù)需要添加功能,並且它使用靜態(tài)文件意味著它可以處理大量內(nèi)容而不會減慢速度。

以上是如何使用金屬史密斯創(chuàng)建靜態(tài)站點的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應(yīng)的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

JavaScript與Java:您應(yīng)該學到哪種語言? JavaScript與Java:您應(yīng)該學到哪種語言? Jun 10, 2025 am 12:05 AM

javascriptisidealforwebdevelogment,whilejavasuitslarge-scaleapplicationsandandandroiddevelopment.1)javascriptexceleatingingingingingingingbeatingwebexperienceswebexperienceswebexperiencesandfull-stackdeevermentwithnode.js.2)

在JavaScript中使用哪些評論符號:一個明確的解釋 在JavaScript中使用哪些評論符號:一個明確的解釋 Jun 12, 2025 am 10:27 AM

在JavaScript中,選擇單行註釋(//)還是多行註釋(//)取決於註釋的目的和項目需求:1.使用單行註釋進行快速、內(nèi)聯(lián)的解釋;2.使用多行註釋進行詳細的文檔說明;3.保持註釋風格的一致性;4.避免過度註釋;5.確保註釋與代碼同步更新。選擇合適的註釋風格有助於提高代碼的可讀性和可維護性。

JavaScript評論的最終指南:增強代碼清晰度 JavaScript評論的最終指南:增強代碼清晰度 Jun 11, 2025 am 12:04 AM

是的,javascriptcommentsarenectary和shouldshouldshouldseffectional.1)他們通過codeLogicAndIntentsgudedepleders,2)asevitalincomplexprojects,和3)handhanceClaritywithOutClutteringClutteringThecode。

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語言,各自適用於不同的應(yīng)用場景。 Java用於大型企業(yè)和移動應(yīng)用開發(fā),而JavaScript主要用於網(wǎng)頁開發(fā)。

JavaScript評論:簡短說明 JavaScript評論:簡短說明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

掌握JavaScript評論:綜合指南 掌握JavaScript評論:綜合指南 Jun 14, 2025 am 12:11 AM

評論arecrucialinjavascriptformaintainingclarityclarityandfosteringCollaboration.1)heelpindebugging,登機,andOnderStandingCodeeVolution.2)使用林格forquickexexplanations andmentmentsmmentsmmentsmments andmmentsfordeffordEffordEffordEffordEffordEffordEffordEffordEddeScriptions.3)bestcractices.3)bestcracticesincracticesinclud

JavaScript數(shù)據(jù)類型:深度潛水 JavaScript數(shù)據(jù)類型:深度潛水 Jun 13, 2025 am 12:10 AM

JavaScripthasseveralprimitivedatatypes:Number,String,Boolean,Undefined,Null,Symbol,andBigInt,andnon-primitivetypeslikeObjectandArray.Understandingtheseiscrucialforwritingefficient,bug-freecode:1)Numberusesa64-bitformat,leadingtofloating-pointissuesli

JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

See all articles