4 min read

Satu Lagi Dari Vue, VuePress

Satu lagi dari luang lingkup vue, setelah vue menjadi salah satu javascript framework yang populer, ada NUXT dengan Server Side Rendering, sekarang ditambah Vuepress platform berbasis vue untuk membuat static blog.

Pemasangan

Sebagaimana vue-cli, vuepress bisa kita pasang juga secara global dengan cara

npm install -g vuepress

Atau pengguna yarn

yarn global add vuepres

Persiapan

Buat satu direktori untuk kita gunakan seabgai sumber static site

mkdir vueblog

Masuk ke dalam direktori tersebut dan buat satu berkas index.md sebagai index dari static site.

touch index.md

Isikan sederhana saja kontennya sebagai landing page

---
home: true
sidebar: true
actionText: Masuk→
actionLink: /posts/
features:
- title: Portofolio
  details: Ini merupakan web static untuk portofolio.
- title: Tentang
  details: Semacam halaman tentang saya dan situs ini.
footer: MIT Licensed 
---

Lalu jalankan di dalam root direktori

vuepress dev .

Perintah di atas akan menjalankan server localhost:8080 sehingga saat dikunjungi hasilnya

landing

Pada bagian actionLink saya menambahkan /posts/ maksudnya saat diklik akan mengunjungi alamat localhost/8080/posts/ maka selanjutnya buat satu direktori di root dengan nama posts

mkdir posts

Di dalam direktori saya akan buat dua buah berkas, index.md dan new-post.md

touch posts/index.md
touch posts/new-post.md

Masing-masing isikan seperti berikut

---
title: Post Index
lang: id-ID
---

# Selamat Datang

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent metus nunc, facilisis et eros ut, consequat vehicula sem. Vivamus suscipit mauris eget iaculis blandit. Aenean eget turpis vitae purus sodales bibendum ac vel ex. Donec aliquet molestie arcu ut dictum. Proin suscipit dignissim sapien eget sagittis. Morbi et erat sit amet lectus fermentum vestibulum sed quis erat. Suspendisse rutrum, nibh maximus faucibus pellentesque, magna augue accumsan risus, at egestas erat odio a massa. Ut cursus augue mattis, elementum ipsum eget, congue lorem. Pellentesque tristique enim diam, at pulvinar ipsum eleifend ac. Nam sed fermentum metus, in rhoncus nibh. Donec tempor sit amet metus eu viverra....

Saat kita akses localhost:8080/posts/ hasilnya

index-post

---
title: New Post
lang: id-ID
---

# Selamat Datang di New Post

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent metus nunc, facilisis et eros ut, consequat vehicula sem. Vivamus suscipit mauris eget iaculis blandit. Aenean eget turpis vitae purus sodales bibendum ac vel ex. Donec aliquet molestie arcu ut dictum. Proin suscipit dignissim sapien eget sagittis. Morbi et erat sit amet lectus fermentum vestibulum sed quis erat. Suspendisse rutrum, nibh maximus faucibus pellentesque, magna augue accumsan risus, at egestas erat odio a massa. Ut cursus augue mattis, elementum ipsum eget, congue lorem. Pellentesque tristique enim diam, at pulvinar ipsum eleifend ac. Nam sed fermentum metus, in rhoncus nibh. Donec tempor sit amet metus eu viverra...

Saat kita akses localhost:8080/posts/new-post.html hasilnya

new-post

Untuk halaman about dengan cara yang sama buat direktori dengan nama about lalu isikan berkas yang diinginkan.

Konfigurasi

Sebelumnya kita perlu melakukan build terhadap static site yang dibuat ini

vuepress build .

Perintah di atas akan mebentuk direktori baru dengan nama .vuepress di dalam sana kita bisa menambahkan berkas konfigurasi dengan nama config.js

cd .vuepress
touch config.js

Dalam berkas tersebut kita bisa membuat judul global situs yang sedang dibuat

module.exports = {
  title: "ARSMP",
  description: "Mencoba Vuepress"
}

Dengan menambahkan konfigurasi maka tampilan web seperti berikut

new-landing

Oke, saya punya dua menu yaitu posts dan about tambahkan script berikut di config.js menjadi seperti ini

module.exports = {
  title: "ARSMP",
  description: "Mencoba Vuepress",
  themeConfig: {
    nav: [
      { text: "Home", link: "/" },
      { text: "Post", link: "/posts/" },
      { text: "About", link: "/about/" }
    ]
  }
}

Hasilnya

new-landing

kalau tidak berubah lakukan proses build lagi vuepress build .

Navbar telah dibentuk, oh iya kalau dilihat tadi saya membuat dua menu di masing-masing halaman, misal di direktori posts saya buat index.md dan new-post.md agar halaman tersebut muncul linknya di sini digunakanlah sidebar, maka ubah kembali config.js seperti berikut

module.exports = {
  title: "ARSMP",
  description: "Mencoba Vuepress",
  themeConfig: {
    nav: [
      { text: "Home", link: "/" },
      { text: "Post", link: "/posts/" },
      { text: "About", link: "/about/" }
    ],
    sidebar: {
      "/posts/": sidebarConfig("Post", ["", "new-post"]),
      "/about/": sidebarConfig("About", ["", "tentang-web"])
    }
  }
};

function sidebarConfig(title, child) {
  return [
    {
      title,
      collapsable: true,
      children: child
    }
  ]
}

Hasilnya bisa dilihat seperti berikut

new-landing

Kesimpulan

Hal baru memang jika dulu static site saya tahunya jekyll atau hugo maka vue js mencoba bermain hal yang sama, walaupun dari template, kemudahan deploy saya masih agak kesulitan dibanding saat menggunakan jekyll tapi saya rasa berikan waktu saja vuepress akan menjadi static site yang populer, semoga.

Source code : https://gitlab.com/ariesmaulana/vueblogpress

Referensi

vuepress.vuejs.org
https://github.com/vuejs/vuepress