vuejs/vuepress

Blog Support roadmap (Resolved)

chuckdries opened this issue Β· 90 comments

Hello,

I'm excited to use vuepress for my personal website but I kinda want blog support before I switch, so I was thinking I'd kickstart that discussion on that now. This issue is to seek input as to what blog support might look like.

I was thinking a minimum viable product might be

  • some kind of tag/category system
  • An alternative default theme which feels more like a blog
  • helper utilities for themes (high order components?) for getting lists of posts around the tag/category system
  • Pre-defined markdown templates that correspond to theme vue components, like hexo's layouts
  • A CLI command for bootstrapping posts, vuepress new [layout] <post title>

I think you should add also the functionality to publish only posts with dates that has already came like gatsby and jekyll. If you need help I would absolutely love to work on these tasks with you

gaomd commented
  • RSS/JSON Feed
  • Draft post
  • Ability to eliminates the .html extension
  • Split date into subdirs: blog/2018-04-16-post-title.md => blog/2018/04/16/post-title/index.html

The ability to alias posts and create redirects for them to allow movement of old posts while preserving all incoming links.

Maybe list all post in some sort of filter (customizable, of course), tags or categories and show them in README.md at first (chronologically or by tags).

Tsuki commented

vuepress eject with default config

I have been reading VuePress code and comparing with the blog build system I have written for Gulp.

List of features I have for my gulp static blog:

  • Markdown
  • Custom frontmatter
  • Per-post CSS and JS
  • Content in siteData to create feed, index page, etc.
  • RSS/JSON feed
  • Date parsing from filename
  • Tags in frontmatter
  • Virtual directories in URL, as described by @gaomd, turning 2018-04-16-post-title.md to blog/2018/04/16/post-title/index.html
  • Custom helper functions, like reading time calculation from markdown
  • Pagination for blog page
  • Paginated monthly archives
  • Paginated tag pages
  • Link-posts (like Daring Fireball, showing differently in feed if link frontmatter meta is found)

These are all the features I've built for gulp static site building, and would like VuePress to have.

However, adding all of that to the "core" would not be very great. I think a better, smarter solution would be to think of a way to allow themes to modify/plug into prepare and build stages, creating virtual pages, feed, etc.

I'm happy to help building and designing Blog theme, but I'd like to work out this build stage plugins before, instead of forking and modifying "core".

Looks like it is reasonably easy to get lists of posts and filter tags/categories working even without support in the Layouts. Inside any .md file:

---
home: true
---
<div v-for="post in posts_with_tag('some_tag')"
     :key="post.frontmatter.date">
  <router-link :to="post.path">
    <article>
      <div class="title">{{ post.title }}</div>
      <div class="date">{{ new Date(post.frontmatter.date).toLocaleDateString() }}</div>
      <div class="description">{{ post.frontmatter.description }}</div>
    </article>
  </router-link>
</div>

<script>
export default {
    methods: {
        posts_with_tag(tag) {
            return this.$site.pages
            .filter((page) => page.frontmatter.tags)
            .filter((page) => page.frontmatter.tags.includes(tag))
        },
        posts() {
            return this.$site.pages
            .filter((page) => page.path.startsWith("/blog/"))
        }
    },
}
</script>

The only missing part is being able to generate dynamic pages, but I think this can be solved generically along with creating a sitemap, rss feed, specific tag/category pages, redirect links by allowing the theme or pages to add extra routes with plain text content or layouts with data. With something like add_route(route, payload, layout) or add_route(route, content) that the layout/pages can call on the fly for example when they detect a new tag.

Quite right. Generic features/building blogs needed:

  • Registering new routes in theme (for index, archives, tag pages, pagination)
  • Content, not only metadata, in siteData (for feed, index, archive pages)
  • URL rewriting for pages (transform .md filename to nice post URL)

With these building blogs, entire blogging system can be made πŸŽ‰

@lekevicius I think those are the core features that are missing from vuepress, once those are added I believe that the rest of the features listed in this thread can be accomplished through the default or may be an alternitive them. It might be worth rasing them as seperate issues if the others agree?

A draft outosave system.

What about comments? A default theme should perhaps offer a commenting component that integrates one of the popular commenting platforms.

So - the default theme is going to be focused on documentation sites. Proper blog support should be done in a separate theme - and we currently don't have the bandwidth to work on that, so the goal in VuePress core should be designing the minimum API that can enable a custom theme to provide full blogging support. I'd encourage the community to explore that and provide feedback on what is currently lacking (e.g. this comment) and what kind of APIs would make that possible.

For registering additional routes, currently .vuepress/enhanceApp.js can get access to the router. I think we can allow a theme to do something similar. Idea: if a theme exposes index.js, it can do something similar to this:

// theme/index.js
export default ({ Vue, router, options }) => {
  router.addRoutes([
    {
      path: '/archive',
      component: () => import('./Archive.vue')
    }
  ])
}

@yyx990803 That would be great to solve route adding.

Would this also allow route rewriting, that is, transforming 2018-04-16-post-title (.md file) to blog/2018/04/16/post-title (/index.html file)?

Lastly, for making content available, it's related to this line when siteData is being built. What would be an elegant solution to enable content in siteData, for feed?

running vuepress build rebuilds the entire website which makes sense for a documentation website but not as much for a blog. Is there a straightforward approach to build just the newly added pages?

Also linking this here (RSS support was already mentioned above) to keep sitemaps in mind.
Maybe the other ticket can be closed then? πŸ€·β€β™‚οΈ
#52

Other things that my current Metalsmith blog supports and we could implement very easily (sorta nice-to-have features, but at the same time standards nowadays, I suppose):

  • time to read/word count
  • last modified/published date
  • title case for post titles (?)

Maybe also think about nesting themes? So if / uses the default/docs theme, then /blog could use a separate theme and gather everything from blog/*.md as posts? Or should this be solved via themeConfig.docsDir and have two separate builds?

A little bit irrelevant but I have written some really hacky code to make the current VuePress looks a little bit more like a blog with the following config.

https://github.com/ycmjason/ycmjason.com/blob/master/.vuepress/config.js

It will automatically generated a side bar with "YYYY MMM" format and then the title of the article would have the date prepended. So I could now easily add a new article without worrying about adding them to side bar.

See the blog live here:

https://www.ycmjason.com

Support for comments using disqus or the like would be welcome as well.

@rogersachan planning to do that for my site. And also planning to add tags support.

Thanks @mdaffin and @ycmjason, I used your code to create a first version of my blog.
It works, ok. I still need to figure out how to handle to tags in the current version

Thanks for this discussion, I just migrated my blog from hexo, check Deadalusmask/Arthas.me if it helps. 😁
Arthas.me

And also hope for news about disqus support.

Documentation versus Blog Features

I've been looking at the VuePress issues and progress and the push to milestone. I totally get drawing a line between "core documentation use case" versus "blog use case". But I think that too can be a form of trap where features that are useful "core features" or "documentation features" get split off into an either/or system.

For my company's software documentation, I'm thinking on using VuePress, and so we could definitely use some of these features that some would consider more "bloggy".

  • Categories

  • Tags: not just for display per-page, but also as an alternative means of organizing/navigating content.
    For instance, many help documentation systems support multiple "builds" whereby tag variables trigger alternative versions of the content. For instance, a "Platinum" build might include all of the feature documentation. Or, in VuePress' case, one build of documentation might be "Core + Documentation" and the other build would be "Core + Blog".

  • Last Updated

@eyleron once the plugin system gets released then things should be more composable. Ideally, it would be nice to keep the core features light and implement most optional features in plugins or separate themes rather than bloating down the core with every possible feature people could want.

Even common things like tags and categories can be harder to make generic across a blog and docs and I think it would be better first designing these features in plugins and themes where there is more freedom to try things out and experiment before setting on a design for things if one can be found. I know I for one have found the tagging system of some static site generators to be limiting for what I wanted to do at times.

An improvement that I think is needed is to be able to add a label in the menu that says example component x (New) or component x (updated) something like this
screenshot_30

I would love to help in this

@luisDanielRoviraContreras
That's cool, but may not in this blog roadmap

@meteorlxy Yes or we can add it in the .md something like this

---
tag: New
---

@luisDanielRoviraContreras You already have access to a page's metadata in your theme, so the feature 'exists', it's just a matter of displaying it visually

Most of these features mentioned can already be implemented in the non-blog-focused VuePress. What we really need here is a clean list of what kind of extendability is missing.

Creating a separate standard theme repo for a blog setup would be nice, but I think what we need first is a solid plugin system. The moment VuePress steps into the blog space, developers are going to want a wide range of features available. I don't believe that many of these should be the responsibility of core, or even a theme. Instead efforts should be focused on building a plugin system, as that would allow developers to cherry pick the features they want. From there, a theme should be able to require plugins it needs for features such as tag/category systems, archives, 3rd party comment systems, external content management features, etc etc.

@Johnhhorton
So, it sounds like from most of the roadmap and suggestion issues that Core vs Blog feature decisions come down to:

  1. Decide whether belongs in core, now or later.
  2. If not in core, then it must be via plugin (waits on plugin system) or a different use of the core or plugins.
  3. Which theme: core, blog, something.

Hmm I'd rather let VuePress focus on documentation features and have a light-weight blog feature if possible. For example, with following structure:

- docs/
  - blog/
    - hello-world.md
  - guide/
	- getting-started.md

VuePress generates /blog (with post list, pagination etc) and /blog/hello-world.html, no tags no categories, just a blog feature for your documentation.

Not sure if this matters to others, but maybe allow for theme-building with frameworks such as Quasar?

@monicaaikorice Haven't used Quasar but I think UI frameworks would just work?

@egoist I'd think so, too, but Quasar has its own CLI and the file structure is a bit different.

whoan commented

Here is a minimalist custom theme I created to migrate my blog to vuepress. Hope it helps someone to solve some problems you will have while implementing custom themes. e.g: managing dependencies specific to the custom theme.

Is is worth mentioning that it is based on the desing of canvas, another blogging system.

@ycmjason thanks you , I modified my sidebar based on your config code. This is my config.js and my doc site

@whoan awesome theme

@xkcoding
Can you change your home screen features?

@ycmjason so sorry,I will change immediately

@xkcoding
Don't worry, I just find it weird that my features appear on yours. 😁😁😁

(thanks for vuepress I like it a lot)

Handy way to customize your Page with end of post author information, footer, CTA widget without having to eject:

.vuepress/components/Layout.vue

<template>
  <div>
    <Page :sidebar-items="$parent.sidebarItems">
      <!-- <h1 slot="top">{{$page.title}}xx</h1> -->
      <template slot="bottom">
        <Author/>
      </template>
      <!-- {{Object.keys($root.$options.components)}} -->
      <!-- {{Object.keys(Vue.options.components)}} -->
    </Page>
    <div :is="$page.frontmatter.cta || 'CTA'"/>
    <Footer/>
  </div>
</template>

<script>
import Page from 'vuepress/lib/default-theme/Page'
export default {
  components: { Page }
}
</script>

note:slot="top" got left out of the PR that added slot="bottom". But I'm still happy about slot="bottom"!!!

Call to action widget skeleton

.vuepress/components/CTA.vue

<template>
  <div class="cta" v-if="$page.frontmatter.cta !== false">
    <h3>CTA box here</h3>
  </div>
</template>

<style lang="stylus" scoped>
  .cta {
    max-width 31rem
    margin 0 auto
    border 1px solid
    padding 1rem
  }
</style>

Footer with articles

.vuepress/components/Footer.vue

<template>
  <div class="footer">
    <div>
      <h3>Hiring Engineers? You'll like these articles</h3>
      <Articles tag="hiring"/>

      <h3>Growth Engineering Articles</h3>
      <Articles tag="growth"/>

      <h3>How to...</h3>
      <Articles tag="howto"  not="hiring, growth, git, nodejs"/>

      <h3>Node.js</h3>
      <Articles tag="nodejs" not="hiring, growth"/>

      <h3>Git</h3>
      <Articles tag="git"    not="hiring, growth, nodejs"/>

      <!-- <h3>Projects</h3> -->
      <h4><router-link to="/archived.html">Archived</router-link></h4>

      <h3>Find me</h3>
      <a href="https://github.com/DTrejo">Github</a>
      <br/>
      <a href="https://twitter.com/ddtrejo">Twitter</a>
      <br/>
      <a id="email" href="#" title="david at this domain">Email</a>
      <br/>
      <br/>

      <div v-if="$site.themeConfig.footer">
        {{ $site.themeConfig.footer }}
      </div>
    </div>
  </div>
</template>

<style lang="stylus" scoped>
  @import '../override.styl'
  .footer {
    margin-top 5rem
    padding 3rem 0
    background-color $textColor
    color $borderColor
  }
  .footer > * {
    max-width 33rem
    margin 0 auto
  }
</style>

Article list component that lets you filter by tag (based on the one posted above, ty!)

.vuepress/components/Articles.vue

<template>
  <ol>
    <li
      v-for="post in $site.pages.sort((a, b) =>
        -1 * (a.frontmatter.date || '').localeCompare(b.frontmatter.date)
      )"
      v-if="(!tag || tags(post).includes(tag))
        && !intersects(tags(post), parseTags(not))"
      :key="post.frontmatter.title"
    >
      <router-link :to="post.path">
        <div class="title">{{ post.title }}</div>
        <!-- <div class="date">{{ new Date(post.frontmatter.date).toLocaleDateString() }}</div> -->
        <!-- <div class="description">{{ post.frontmatter.description }}</div> -->
        <!-- TODO: include excerpt instead? -->
      </router-link>
      <!-- style="white-space: pre; font-family: monaco, monospace;"
      {{JSON.stringify([this,tag, post], null, 2)}} -->
      <!-- it is okay to put this in an <article> if you include excerpt etc -->
    </li>
  </ol>
</template>

<script>
export default {
  props: {
    tag: {
      type: String
    },
    not: {
      type: String,
      default: ''
    }
  },
  methods: {
    parseTags,
    tags(post) {
      return parseTags(post.frontmatter.tags)
    },
    intersects(a, b) {
      // console.log('intersects', a, '|', b, '===', a.some(el => b.includes(el)))
      return a.some(el => b.includes(el))
    }
  }
}

function parseTags (raw) {
  // handle "abc" and "abc, def"
  if (typeof raw === 'string') {
    return raw.split(',').map(s => s.trim())
  }
  return raw || []
}
</script>

Thanks everyone!

PS I'm not "done" yet so I haven't published anything, but here's what one of my articles looks like:

localhost_8080_2018-01-11-referrals html

@yeedle said

What about comments? A default theme should perhaps offer a commenting component that integrates one of the popular commenting platforms.


What if we pulled in github comments for the corresponding markdown document?
I remember I saw there was a project that did this, I don't know how involved it was to set up though.

@david-trejo-ck Is this repo Gitalk / demo page or this repo Gitment / demo page?

@ycmjason did you make any progress on adding Disqus to your vue-press site? what issues did you run into?

@rayfoss i haven't done it. The disqus add-on probably need a custom theme. Since the default theme is still changing quite frequently, I want to wait before ejecting.

But it could also be done with plugin, so i will just wait a bit.

I think the features like blog tag/category are the most people needed, should make them be the part of the default theme, or more theme demos show how to achieve the popular requested features. Guide how to write&add features in my theme(in the HP but not GitHub issue) shall be better than just put them into Vuepress...

@arkceajin so the direction that vuepress wants to go is technical documents. Not for blogs.

So it would be more suitable for blogs to live in a separate theme.

I modded Vuepress + made a theme for my blog. Here is the (meta) blog post: http://blog.matsu.io/back-to-blogging-with-vuepress, in case anyone is interested.

@octref I see that you have pretty URLs on your blog, that's exactly what I recently started working on here: #608 .

I don't really know how your code works, but the way I generated my URLs still allowed for normal content file structure, like shown here: #78 (comment)

Does your code allow for a normal content structure? If so, that's awesome.

@awulkan It does, you can see https://github.com/octref/blog (or even build it with yarn && yarn build ). Lack of Clean URL just drives me crazy.

@octref But it looks like you have each file named index.md, and then you have to put them in a folder with the name of the path. What I meant was the ability to turn /blog/my-post.md into /blog/my-post/index.html automatically.

Also, does it remove the .html extension?

What I meant was the ability to turn /blog/my-post.md into /blog/my-post/index.html automatically.

That is doable, but I didn't do it for myself.

The generated files still have html extension, which is required for Clean URL to work properly. See https://surge.sh/help/using-clean-urls-automatically.

@octref interesting. That means that my code could be simplified quite a bit. I don't like this though since it generates a trailing slash sometimes.

/foo/bar automatically redirects to /foo/bar/ if /foo/bar.html isn’t present, but /foo/bar/index.html is

Also how does the redirection actually work? I thought the routing was handled on the client side.

Edit: Yup, it appears that your site does a full page refresh when navigating, defeating the purpose of the Vue router.

Also how does the redirection actually work?

That is handled on server side. That's what Netlify, Surge.sh and Github Pages do.

defeating the purpose of the Vue router.

That's intentional. Each of my page contains 0 javascript other than Google Analytics, and each page is smaller than the minified vue-router :) I understand that you want client side routing, and I would use it for apps, but when I do static websites I want the output to be static HTML.

OPINION: @octref making vuepress javascript free seems counterproductive, and better left to Hexo. The client side search can't be done without javascript. I would love to see PWAish transitions in vuepress and not the web's flicker that happens between pages. As well as some awesome vue carousel of articles with images. I think Vuepress should be the most well executed static PWA renderer for personal websites, not just another static site generator like Hexo/Jekyll.

@octref So you don't want smoother loading like the example I created here?
https://vp-urls.netlify.com/

Then you wouldn't have to rely on your host to handle the routing at all, and no page reloads would be necessary. Of course you're free to do whatever you want to, just asking. :)

@awulkan @rayfoss I see your point, but I'm not sold on PWA. Guess we just want different things (I talked more about this in #602), and I can happily live in my own fork or build my own thing.

For https://vp-urls.netlify.com,

image

This is my model of static website: https://apex.sh

image

What I want is something similar to https://github.com/apex/static.

I think Vuepress should be the most well executed static PWA renderer for personal websites, not just another static site generator like Hexo/Jekyll.

I think that's covered by Nuxt, but anyway, if that's Vuepress's vision, I wish you good luck and I'll build something different.

@octref I get what you're saying, I just wonder if VuePress is the right choice for you (or me for that matter). It just doesn't feel right to break the built in client side routing.

I would use the same tactic as you are to get clean URLs, if i knew that it would be the intended way for Vuepress to work. It would suck to build a website with vuepress and then have to change to another generator if the hack you're using now doesn't work anymore all of a sudden.

@octref Just wanted to tell you that you can put this in your config file:

shouldPrefetch: (file, type) => {
    return false;
}

https://vuepress.vuejs.org/config/#shouldprefetch

And it will not pre-load everything. It will just load the files needed for the specific page you are on.

If we can get the "pretty url" stuff that I talked about in my github issue, then you should be able to get VuePress working as you want it, without having to rely on your host's routing, and doing a full page reload between each route change.

Using shoudPrefetch will probably be necessary for most larger blogs.

@ulivz Why was this closed? Is there some other issue or place we can track for updates on blog functionality support in VuePress?

ulivz commented

@mathiasbynens

Thanks for your concern, I just found too many irrelevant discussions, and we are developing an official blog theme, and once the official blog is basically completed, I think it would be more appropriate to reopen a targeted discussion.

That’s great to hear! Can folks track the status of the official blog theme anywhere? (Is there a repo yet?)

ulivz commented

After the official blog is basically completed, I will inform everyone here and provide a link to continue the discussion. (I believe it should be within a week.)

@ulivz Then why don't you keep this issue open, if there is no other issue tracking blog support yet? Or better yet, create a new issue that describes what you plan to do for the "Official Blog Theme".

You don't need to create issue only after "basically completed". Just having an issue that says what you plan to do helps keeping everyone updated.

I actually think the non-js / pure-static usage is something we might want to consider supporting. Something like a "purely static mode", mostly because it seems to be a low-hanging fruit that can broaden the use case. Purely static pages do have the advantage of smaller payload and less JavaScript execution.

After @ulivz is done with the refactoring in the next branch we can take a few PRs to add support for:

  1. A cleanUrl option to generate clean urls for static services that support it.

  2. Purely static mode (mostly just dropping the scripts in the rendered HTML)

@yyx990803 Thanks for your insights! I actually created both issue a while ago:

  1. Clean URL: #603
  2. Purely static mode (I'll reopen this then): #602
ulivz commented

1st step of blog support, permalink has been basically completed: #763

excellent!

This is such a cool and exciting project. With all these comments, I've noticed multiple mentions of "tags" and "categories" and the idea of "blog support." I think a more flexible and future-friendly mindset is to not limit things to just these categorizations and not think only of a "blog," which is a limited mental model/content ontology as sites start to grow; e.g.β€” this is why sites with really complex relationships between content become unmanageable with Wordpress, and why platforms like Jekyll have trouble breaking out of the dev-o-sphere.

I really like the more abstracted approach to taxonomies that Hugo uses. Content managers can then arbitrarily define controlled vocabularies (or folksonomies, if you're intro crazy-makers) that can be used for navigation (e.g. Wired.com's use of WP categories for global nav), or just to define related articles by making taxonomic weight configurable at the site level without having taxonomies necessarily rendered to user-visible pages.

Naturally, everything else sounds good too; e.g., permalinks, redirects, etc...

Please, please do not turn the default theme into yet another blogging engine. This is what makes VuePress unique and preferred for other content besides blogging. One of the biggest failures of the Hugo project is the blog model built into every component of it from the start.

Consider as well the existing PWA/app support built into the default theme. This static/cache-first integration is absolutely amazing and allows VuePress to replace other portable document solutions. The idea itself is somewhat at odds with dynamic, perhaps daily blogging and integration of comment threads.

I'm good with adding all these blog-centric things through configuration to even the default theme, but clearly the easiest solution is to produce one or more blog-centric themes to choose from and leave the basic VuePress documentation-centric model alone.

pls set up a doc domain for next version vuepress.

ulivz commented

@robmuh Of course we don't plan to turn the default theme into yet another blogging engine. actually all the blog features has been done by plugins, so the original features that VuePress has will not be changed.

ulivz commented

@willin we have set the Netlify build for each PR, so you can check out the deploy site:

  1. Documentation (Updating): https://deploy-preview-815--vuepress.netlify.com/plugin/
  2. Blog Showcase (Updating): http://www.v2js.com/vuepress-theme-egoist/
  3. Blog Showcase source (Updating): https://github.com/ulivz/vuepress-theme-egoist

With plugin @vuepress/plugin-blog and @vuepress/plugin-pagination, writing a blog theme will be very simple.

ulivz commented

About publishing, we plan to release the alpha version at 25th of this month. β€”β€” The rest of the work is basically to write documentation and migration help, I hope I can complete them ASAP.

ulivz commented

BTW, is there a desiger(familiar to AI or Sketch) who wants to join the design of the official blog theme?

Some design principles:

  1. Follow the UX of Vue.
  2. Try to keep consistent with @vue/ui.

// cc @Akryum

@ulivz I'm a UI / product designer, spend all my time in Sketch and would love to design a blog theme.

I would be happy with essentially a Hugo clone that uses Vue.js for the templates.

ulivz commented

@lekevicius So excited to know that you want to join in the design of the blog theme, my twitter is @_ulivz, let's talk privately.

A few days ago I made a little npm cli called vuepress-new-page so that I can easily create new pages/posts, and just now I found out that it was one of the must have items on the MVP list:

A CLI command for bootstrapping posts, `vuepress new [layout] <post title>`

Is that what you had in mind?

@ulivz Why doesn't blog plugin use Layout.vue as Default when path match _post , it use Post.vue as default layout . And document doesn't mention it, so it confuse me .

I can highly recommend Git2Go for iOS - when paired with circleci you can publish new articles from your phone to github pages! I love it

Details: https://github.com/DTrejo/dtrejo.github.io
(It started as a vue site and then transformed)

I made a few plugins that cover some of the must have items discussed here:

All plugins have default options that can get you started quickly.

Hope you find them useful.

I created a Vuepress reading time plugin to display how long a page takes to read

@webmasterish @darrenjennings Consider adding your awesome plugins to Awesome Vuepress?

Hi!
Where I can find how to create blog with vue blog plugin and vue pagination plugin?
Documentation of this plugins is very pure, and I do not know where to start

@tolyanor it looks like they'll be working on finishing the blog configuration sometime in March. The project roadmap has some general info on timelines:
https://github.com/vuejs/vuepress/projects/1

Hi there,

I've read through the rfc for the blog plugin/theme. Are there any updates on how far along this has come?

I recently finished implementing a static blog site generated from .md files using nuxt, frontmatter-markdown-loader and highlight.js for code highlighting. It's not the best experience setting it all up and it's not working exactly how I would like it to.

Anyone have any info on the actual progress and how far along this is?

@ulivz Just checking if there's any update on the timeline for the official blog support. Really appreciate all the work you are doing with this project!

vuepress is great. I thought to build a blog with blog plugin, but it seems to have been deleted from 1.x version today, do not update in the future?

ulivz commented

Hey, all, sorry for the delay to notify all of yours about the latest progress and 3 good messages β€”β€” For now on, writing a blog or blog theme with VuePress will be quite easy than you think.

New Blog Plugin: https://github.com/ulivz/vuepress-plugin-blog

Note that we have fully rewritten the blog plugin from 1.0.0-beta.1, the previous blog plugin has some designing issues and even doesn't have a good documentation.

Default Blog Theme: https://github.com/ulivz/vuepress-theme-blog

(Live Example: http://example.vuepress-theme-blog.ulivz.com/) Welcome contribution for the mobile-side styles enhancement、RSS and site map support.

A VuePress Blog Theme implemented in around 70 lines: https://github.com/ulivz/70-lines-of-vuepress-blog-theme


Why moving the blog-related stuffs out of core repo?

The core is stable enough, but we need quick iteration for blog plugin and theme, so it's not very necessary to manage them under one repo.

In addition, we want the core repo focus more on documentation itself, and avoiding infinite growth of code can also ease the growing maintenance pressure of the core repo.

ulivz commented

So it's time to close this issue, please head correct repo to ask question, submit issue, feature request or pull request (Welcome!)

Thanks for all of yoursβ€˜ continued support for VuePress, there's still a long way to go, and VuePress can be better. Let's go together!