Nuxtent
Seamlessly use content files in your Nuxt.js sites.
This is a work in progress from integrating nuxtdown features and fixing critical bugs. DO NOT USE IN PRODUCTION
Summary
The goal of Nuxtent is to make using Nuxt for content heavy sites as easy as using Jekyll, Hugo, or any other static site generator.
Nuxtent mainly does this in two ways:
-
By compiling all the data from
markdown
oryaml
files based on configured rules. -
By providing helpers for dynamically accessing this data inside Nuxt pages.
But, we didn't just want to make Nuxtent as good as a static site generator–we wanted to make it better.
So, along with that, Nuxtent also supports: -
The usage of content files in both static sites and dynamic applications.
-
The usage of
Vue components
inside markdown files. -
Automatic content navigation, between pages via
path
and within pages viaanchors
.
There you go: five reasons to give Nuxtent
a try, and maybe even star and share it.
Features
- Simple configuration
- Allows you to override settings for the markdown parser (markdown-it), and use its plugins
- Support both blog posts or similar flat content structures, and a nested hierarchy of markdown content
- Adds useful info to your markdown page's meta info, including:
- Any data your specify in the config file
- A breadcrumbs trail for hierarchical markdown content
- (the info for) a table of contents
- Support for using vue components inside your markdown content
- Adds the $content helper to Nuxt to allow your to access your markdown content and metadata inside Nuxt pages
v3.X goals
- [ ] Improve the documentation and at least a spanish translation
- [-] Windows compatible (Help needed)
- [ ] Be zeroconf and extendible through it's own api and exposing the markdown parser
- [ ] Allow default attributes to be set on the frontmatter ej. title
- [ ] Real async modules (this affects ssr more than a static build)
- [ ] Fully integrate with the new features nuxt2.0 and node 11
- [ ] Debugable configuration
- [ ] Better error reporting
- [ ] Improve the template with optional addons as examples
- [ ] Document the code in order to simplify contributions and future development
- [ ] Support multiple file types
- [ ] Integrate the api configuration with nuxt itself while keeping it configurable
- [x] Expose $content helper and it's constant like api endpoint through all of vue
- [ ] Vuex integration
- [-] Improve on SSR memory usage
- [ ] Keep the main features from nuxtdown:
- [ ] Breadcrubms
- [ ] Automatic table of content (TOC)
- [ ] Isolated and global configurations
- [ ] Allow for nested content and index files
Simple yet flexible API
Nuxtent was created to integrate with Nuxt (otherwise, you're just building another Jekyll-like tool, with the same amount of mental overhead).
Nuxtent's API is simple yet flexible. All you have to do is
- Configure the content and
- Fetch the files with the
$content
helper inside theasyncData
method that is available in Nuxt pages.
Here's a basic example:
// nuxtent.config.js
module.exports = {
content: {
page: '/_post',
permalink: ':year/:slug'
}
}
// pages/_post.vue
export default {
asyncData: async ({ app, route }) => ({
post: app.$content('posts').get(route.path)
})
}
The response for each item is:
{
}
Quick Start
If you're starting a new site, you can use the nuxtent-starter template.
$ vue init nuxt-community/nuxtent-template my-site
$ cd my-site
# install dependencies
$ npm install # Or yarn install
Or if you already have your nuxt project:
Installation
npm install nuxtent --save
Then, under nuxt.config.js
install the module:
modules: [
'nuxtent'
]
Documentation
Documentation available at: https://nuxtent.now.sh/ (built with Nuxtent).
Sites built with Nuxtent
Have a site using Nuxtent? Fork the repo and add it to the list below!
Personal Sites
Documentation Sites
Corporate Sites
License
Copyright (c) 2017 Nuxt Community