Vite & Vue powered static site generator.

Last update: Jul 5, 2022

(WIP) VitePress 📝 💨

Test npm


🔥 Note this is early WIP! Currently the focus is on making Vite stable and feature complete first. It is not recommended to use this for anything serious yet.


VitePress is VuePress' little brother, built on top of vite.

Documentation

To check out docs, visit vitepress.vuejs.org.

Changelog

Detailed changes for each release are documented in the release notes.

Contribution

Please make sure to read the Contributing Guide before making a pull request.

License

MIT

Copyright (c) 2019-present, Yuxi (Evan) You

GitHub

https://github.com/vuejs/vitepress
Comments
  • 1. hydration mismatch when using auto minify

    Describe the bug

    I built and published vitepress pages to my server, but got Hydration completed but contains mismatches error when i review, and the index page rendered nothing but blank, and other pages show correctlly. image

    But it runs perfectly on my local within dev mode

    Reproduction

    • type run npm docs:build and wait.
    • zip all release files under destination folder and push it to server
    • unzip and place to the nginx root folder
    • visit the site

    Expected behavior

    the index page displays correctlly.

    System Info

    System:
        OS: macOS 11.4
        CPU: (8) x64 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
        Memory: 1.22 GB / 16.00 GB
        Shell: 5.8 - /bin/zsh
      Binaries:
        Node: 14.15.1 - /usr/local/opt/nvm/versions/node/v14.15.1/bin/node
        Yarn: 1.22.10 - /usr/local/opt/nvm/versions/node/v14.15.1/bin/yarn
        npm: 6.14.8 - /usr/local/opt/nvm/versions/node/v14.15.1/bin/npm
      Browsers:
        Chrome: 92.0.4515.131
        Safari: 14.1.1
      npmPackages:
        vitepress: ^0.16.1 => 0.16.1
    

    Additional context

    vitepress v0.16.1
    vite v2.4.4
    ⠴ building client + server bundles...Use of eval is strongly discouraged, as it poses security risks and may cause issues with minification
    ⠦ building client + server bundles...Use of eval is strongly discouraged, as it poses security risks and may cause issues with minification
    ⠸ building client + server bundles...
    (!) Some chunks are larger than 500kb after minification. Consider:
    - Using dynamic import() to code-split the application
    - Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/guide/en/#outputmanualchunks
    - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
    ✓ building client + server bundles...
    ⠙ rendering pages...Warning: Setting up fake worker.
    Error: Setting up fake worker failed: "document is not defined".
        at /Users/mpanda/Documents/GitHub/MPC-Documention/node_modules/vitepress/dist/client/app/temp/assets/mpc.umd.7d0f3985.js:41728:54
    ✓ rendering pages...
    build complete in 25.90s.
    

    I do get some warning when runing build process, my vue components library depends to PDF.js and some of my customized directives are using document for creting DOM, I'm not sure if it due to SSR of vitpress.

    And following are the configuration of my vitepress project.

    docs/.vitepress/config.js

    const vue = require('@vitejs/plugin-vue')
    // import { Options as VuePluginOptions } from '@vitejs/plugin-vue'
    const ssrTransformCustomDir = () => {
      return {
        props: [],
        needRuntime: true,
      }
    }
    module.exports = {
      title: 'MpandaStudio Components Library', // 顶部左侧标题
      base: '/', // 项目的根路径
      lang: 'zh-CN',
      head: [
        // 设置 描述 和 关键词
        [
          'meta',
          {
            name: 'keywords',
            content:
              'MPanda Studio Vue3 UI Components Library/MPanda Studio Vue3 UI组件库',
          },
        ],
        [
          'meta',
          {
            name: 'description',
            content:
              '此UI组件库基于Vue3开发, 从之前开发的项目中提取并转换为Vue3组件。',
          },
        ],
      ],
      themeConfig: {
        sidebar: {
          // 侧边栏
          '/': [
            {
              text: 'Introduction 介绍',
              children: [
                { text: "What's MPC 什么是MPC?", link: '/' },
                { text: 'Start 从起步到芜湖', link: '/guide/start' },
                // { text: "Configuration 文件配置", link: "/guide/configuration" },
              ],
            },
            {
              text: 'Components 组件',
              children: [
                { text: 'Card 卡片', link: '/guide/Components/Card' },
                { text: 'Carousel 轮播图', link: '/guide/Components/Carousel' },
                { text: 'Modal 弹窗', link: '/guide/Components/Modal' },
                {
                  text: 'PDFReader PDF阅读器',
                  link: '/guide/Components/PDFReader',
                },
              ],
            },
            {
              text: 'Directives 命令',
              children: [
                { text: 'Suspend 悬浮', link: '/guide/Directives/Suspend' },
                { text: 'Tooltips 提示框', link: '/guide/Directives/Tooltips' },
                { text: 'Blur 模糊', link: '/guide/Directives/Blur' },
              ],
            },
            {
              text: 'Utils 工具包',
              children: [
                {
                  text: 'isElementInViewport ',
                  link: '/guide/Utils/isElementInViewport',
                },
              ],
            },
          ],
        },
        nav: [
          // 顶部右侧导航栏
          { text: '介绍', link: '/', activeMatch: '^/$|^/guide/' },
          {
            text: '更多',
            link: '/contact/',
          },
        ],
      },
      vue: { 
        template: {
          compilerOptions: {
            directiveTransforms: {
              tooltips: ssrTransformCustomDir,
              suspend: ssrTransformCustomDir,
              blur: ssrTransformCustomDir,
            },
          },
        },
      },
    }
    
    

    docs/.vitepress/theme/index.js

    import DefaultTheme from 'vitepress/theme'
    import MPC from '@mpanda/mpc'
    import '@mpanda/mpc/lib/mpc.css'
    export default {
      ...DefaultTheme,
      enhanceApp({ app }) {
        app.use(MPC)
      }
    }
    

    Validations

    • [X] Follow our Code of Conduct
    • [X] Read the docs.
    • [X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
    Reviewed by HamHwong at 2021-08-18 09:39
  • 2. Proper processing of Vue Component slot content

    Describe the bug/feature

    In both Vitepress and Vuepress the way in which the Markdown-it rule htmlBlock is implemented is highly subpar. This is particularly true because the primary use-case for both is documentation but currently adding in a VueJS component which takes advantage of slot content tends to break rather quickly. This is because -- by default web-components are considered inline components by Markdown (as per the spec). When Markdown encounters inline components it treats the interior scope of the web-component as Markdown content and therefore tends to wreck havoc on slot content.

    Looking at the src/node/markdown/plugins/component.ts file you can start to see the problem when looking at the HTML_SEQUENCES symbol (some lines removed for brevity):

    // An array of opening and corresponding closing sequences for html tags,
    // last argument defines whether it can terminate a paragraph or not
    const HTML_SEQUENCES: [RegExp, RegExp, boolean][] = [
      // PascalCase Components
      [/^<[A-Z]/, />/, true],
      // custom elements with hyphens
      [/^<\w+\-/, />/, true],
    ]
    

    The intent here is to mark the opening and closing of scope for a component but as you can see from the RegEx it is only looking for inline components not block components!

    For example, the component p-table has several named slots which help it to render the way the user intends:

    <p-table>
      
      <template #name="{ row }">
        {{ row.name }}
      </template>
    
      <template #age="{ row }">
        {{ row.age }}
      </template>
    
    </p-table>
    

    Put this into the template section of a Vue CLI app and it works just fine. Put it into Vuepress or Vitepress and watch the cloud of smoke start to rise as it fumbles around; particularly failing on the # symbols used as shorthand for named slots. This is particularly troublesome for a documentation site that is trying to document a set of VueJS components! There should be a way to ensure that this VueJS component's interior scope is left untouched by Markdown-it ... at least when that's what you want.

    There is a second use-case that I would expect Vitepress to just handle and that is kind of what it's doing today but in a hit and miss fashion currently. Let's say that I just have a default slot in my component and therefore I want my component to be seen by the Markdown engine as being an "inline" component and process the interior as markdown. Great, then the following should work:

    <super-sexy>
    # some heading
    ## some sub heading
    </super-sexy>
    

    This would just provide some HTML wrapper elements that would in this case make this very dull markdown sexy.

    Finally there is a third use-case that really should be considered required too ... this is the hybrid but it will allow for all sorts of simple but useful documentation components. The use-case presents as a component that exposes named slots -- and therefore is seen by Markdown as a block component -- but these named slots are processed by markdown. An obvious example might be a <two-columns> component which provides a left and right slot and allows authors to more readily leverage their horizontal space.

    Imagine the following:

    <two-columns>
    
      <template #left>
       I'm a lumberjack and I'm ok
      </template>
      <template #right>
      I sleep all night and I work all day
      </template>
    
    </two-columns>
    

    This will fail miserably today but it could be grand!

    ** Proposed Solution **

    Rework the src/node/markdown/plugins/components.ts file in Vitepress (same change can be applied to Vuepress) to:

    • use more sophisticated RegEx patterns to actually capture BLOCK content not just inline components

    • support two modes of processing for BLOCK VueJS components:

      1. Isolated - the interior scope is not processed as markdown and all registered VueJS components can operate exactly like they would normally do
      2. Parsed - the interior scope is processed as markdown; this will work well for default slots where the interior content is Markdown content
    • the Isolated mode should be seen as the default as it is more powerful and allows components that work outside the context of Vitepress/Vuepress to just work here as well

    • the parsed mode may be popular for components designed strictly for Vitepress and Vuepress and it could be opted into in the HTML template like so:

      <my-crazy-idea parsed>There I was, _there I was_, in the Congo</my-crazy-idea>
      

    This solution so far could pretty easily support the first two use cases which is a big step forward. The third use-case would certainly be nice but would need a bit more thought. I could imagine something as simple as adding the md prop to the parent component being used as a means to pass in the Markdownit object into the top-level component so it could chain the rendering into the various named slots:

    ```html
    <my-crazy-idea md>
      <template #left>
        There I was, _there I was_, 
       <template #right>
         I sleep all night and I work all day
       </template>
    </my-crazy-idea>
    ```
    

    In all likelihood this last option should be done as an optional second step.

    Reviewed by yankeeinlondon at 2020-11-19 07:42
  • 3. Build fails due to custom directive missing an SSR Transform

    Describe the bug

    Adding a simple directive inside a markdown file or an SFC throws an error during the build. Seems like ClientOnly component does not exist yet in VitePress.

    Custom directive is missing corresponding SSR transform and will be ignored.

    To Reproduce

    <div v-test>test</div>
    
    
    <script>
    export default {
      directives: {
        test: {
          mounted(el, binding) {
            console.log(el)
          }
        }
      }
    }
    </script>
    

    Expected behavior Build should work even though an SSR implementation for the custom directive doesn't exist.

    System Info

    • vitepress version: 0.6.0
    • vite version: v1.0.0-rc.4
    • Node version: 12.18.3
    • OS version: Catalina 10.15.6

    Additional context None.

    Reviewed by VinceG at 2020-09-21 04:27
  • 4. `_assets` folder not accessible when deploying to GitHub Page

    Describe the bug Package and deploy to GitHub, no resource package 404 error found

    To Reproduce Steps to reproduce the behavior: Package and deploy to GitHub, no resource package 404 error found

    Expected behavior Package and deploy to GitHub, no resource package 404 error found

    System Info

    • vitepress version: 0.7.4
    • vite version: 1.20.0
    • Node version: 12.13.1
    • OS version: windows10

    Additional context Add any other context about the problem here.

    Reviewed by xiaoxian521 at 2020-11-14 06:40
  • 5. Don’t use a hidden directory

    Too late for Vuepress, but maybe not too late for VitePress:

    Using a hidden directory for .vitepress is very inconvenient. Users must turn on additional settings in file browsers and text editors to see necessary files to edit them. This makes sense for something like git, where it is intended that you mostly interact with a tool and rarely or never directly edit the hidden directory files yourself, but for VitePress, these considerations don’t fit.

    It would make more sense if VitePress was just a thin docs site builder, with the idea that few will customize it, but that’s not the current goal, AFAICT.

    Please revisit this issue now and if you disagree, fine, but document it so that it’s clear to users why a hidden directory is a good fit for the project goals.

    Reviewed by carlmjohnson at 2020-06-08 03:52
  • 6. feat(default-theme): native support for carbon ads

    I also added the existing slots sidebar-top/bottom and page-top/bottom because I used them to add the ads components. To make them work and test them, you need to add this config to the themeConfig:

        carbonAds: {
          carbon: 'CEBICK3I',
          custom: 'CEBICK3M',
          placement: 'routervuejsorg',
        },
    
    Reviewed by posva at 2020-09-14 15:21
  • 7. Unexpected `One or more pages contain dead links` for `localhost` links

    Describe the bug

    <!-- docs/guide/getting-started.md -->
    This will start a local server and open the <http://localhost:3000> page in the browser.
    
    (!) Found dead link http://localhost:3000 in file docs/guide/getting-started.md
    

    Reproduction

    N/A

    Expected behavior

    No error

    System Info

    System:
        OS: macOS 13.0
        CPU: (10) arm64 Apple M1 Max
        Memory: 24.57 GB / 64.00 GB
        Shell: 5.8.1 - /bin/zsh
      Binaries:
        Node: 16.15.1 - ~/Library/Caches/fnm_multishells/60250_1655730203758/bin/node
        Yarn: 1.22.19 - ~/Library/Caches/fnm_multishells/60250_1655730203758/bin/yarn
        npm: 8.12.1 - ~/Library/Caches/fnm_multishells/60250_1655730203758/bin/npm
      Browsers:
        Chrome: 102.0.5005.115
        Firefox: 101.0.1
        Safari: 16.0
      npmPackages:
        vitepress: ^1.0.0-alpha.2 => 1.0.0-alpha.2
    

    Additional context

    No response

    Validations

    • [X] Follow our Code of Conduct
    • [X] Read the docs.
    • [X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
    Reviewed by JounQin at 2022-06-20 13:37
  • 8. TypeError: Invalid value used as weak map key

    Describe the bug

    execuce the command:

    vitepress build docs
    

    output:

    yarn run v1.22.11
    $ vitepress build docs
    vitepress v0.20.0
    ✓ building client + server bundles...
    ✖ rendering pages...
    build error:
     TypeError: Invalid value used as weak map key
        at WeakMap.set (<anonymous>)
        at normalizePropsOptions (E:\SpaceMine\grails-docs\node_modules\@vue\runtime-core\dist\runtime-core.cjs.prod.js:2150:15)
        at createComponentInstance (E:\SpaceMine\grails-docs\node_modules\@vue\runtime-core\dist\runtime-core.cjs.prod.js:4983:23)
        at renderComponentVNode (E:\SpaceMine\grails-docs\node_modules\@vue\server-renderer\dist\server-renderer.cjs.prod.js:194:22)
        at Object.ssrRenderComponent (E:\SpaceMine\grails-docs\node_modules\@vue\server-renderer\dist\server-renderer.cjs.prod.js:620:12)
        at _sfc_ssrRender (E:\SpaceMine\grails-docs\node_modules\vitepress\dist\client\app\temp\guide_command-line.md.js:47:24)
        at renderComponentSubTree (E:\SpaceMine\grails-docs\node_modules\@vue\server-renderer\dist\server-renderer.cjs.prod.js:260:13)
        at renderComponentVNode (E:\SpaceMine\grails-docs\node_modules\@vue\server-renderer\dist\server-renderer.cjs.prod.js:211:16)
        at renderVNode (E:\SpaceMine\grails-docs\node_modules\@vue\server-renderer\dist\server-renderer.cjs.prod.js:301:22)
        at renderVNodeChildren (E:\SpaceMine\grails-docs\node_modules\@vue\server-renderer\dist\server-renderer.cjs.prod.js:316:9)
    error Command failed with exit code 1.
    info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
    

    and there is no information to locate where was wrong.

    Reproduction

    follow the steps:

    > git clone https://gitee.com/ejlchina-zhxu/grails-docs.git
    > cd grails-docs
    > yarn install
    > yarn build
    

    and the error will occurs

    Expected behavior

    the output of vitepress build docs should show where the problem is so that i can fix it

    System Info

    System:
        OS: Windows 10 10.0.19042
        CPU: (4) x64 Intel(R) Core(TM) i5-4460  CPU @ 3.20GHz
        Memory: 8.19 GB / 15.90 GB
      Binaries:
        Node: 14.17.5 - H:\ProgramBase\Node\v14.17.5\node.EXE
        Yarn: 1.22.11 - ~\AppData\Roaming\npm\yarn.CMD
        npm: 6.14.14 - H:\ProgramBase\Node\v14.17.5\npm.CMD
      Browsers:
        Edge: Spartan (44.19041.1266.0), Chromium (93.0.961.52)
        Internet Explorer: 11.0.19041.1202
      npmPackages:
        vitepress: ^0.20.0 => 0.20.0
    

    Additional context

    No response

    Validations

    • [X] Follow our Code of Conduct
    • [X] Read the docs.
    • [X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
    Reviewed by troyzhxu at 2021-10-28 08:21
  • 9. Ability to extend vite config

    Is your feature request related to a problem? Please describe. Currently there seems to be no way to extend the Vite config used by vitepress (or at least it's not clear how to do it). It would be great to have that ability to specify aliases that are used inside of components that are not part of VitePress.

    In our case we have a component library in src, and the docs in docs, but components imported in VitePress use #components/button imports (for example) and VitePress can't resolve those as there's no way to set up aliases for it.

    Describe the solution you'd like A way to extend vite config and/or specify aliases.

    Describe alternatives you've considered I tried creating a vite config in the root, but that prevents TS based SFC's from compiling properly (I think it overwrites the internal config).

    Additional context A quick screenshot of our setup: image

    docs/.vitepress hosts VitePress, but the root is Vite itself (library mode).

    Reviewed by TheDutchCoder at 2021-02-16 17:52
  • 10. `sponsor-link` hidden when `ad block` present

    Describe the bug

    When adding VPTeamMembers with members with sponsor entry, all sponsor links will be hidden if the ad block addon present in the browser.

    Reproduction

    The branch on Vitest repo: https://github.com/vitest-dev/vitest/tree/userquin/docs-update-theme

    If https://github.com/vitest-dev/vitest/pull/1547 merged, just use the main branch.

    The ad block addon must be installed in the browser to reproduce the issue.

    Check also last comments on previous PR, failing in Chrome in MacOS.

    Remove the SponsorLinkFix plugin from docs/vite.config.ts, then:

    • run from root folder pnpm install
    • run from root folder pnpm run docs:serve

    Expected behavior

    The sponsor-link should be always visible.

    System Info

    System:
        OS: Windows 10 10.0.19044
        CPU: (16) x64 Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz   
        Memory: 46.29 GB / 63.95 GB
      Binaries:
        Node: 16.13.0 - C:\Program Files\nodejs\node.EXE
        npm: 8.1.0 - C:\Program Files\nodejs\npm.CMD
      Browsers:
        Chrome: 102.0.5005.115
        Edge: Spartan (44.19041.1266.0), Chromium (103.0.1264.37)
        Internet Explorer: 11.0.19041.1566
      npmPackages:
        vitepress: ^1.0.0-alpha.4 => 1.0.0-alpha.4
    

    Additional context

    The SponsorLinkFix plugin in the Vitest repo just rename any class with the sponsor key to xsponsor in VPTeamMembersItem component: the solution should avoid using the sponsor key.

    Validations

    • [X] Follow our Code of Conduct
    • [X] Read the docs.
    • [X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
    Reviewed by userquin at 2022-06-26 14:55
  • 11. LaTeX implementation

    Is your feature request related to a problem? Please describe.

    I am frustrated and find it difficult in implement LaTeX onto the vitepress

    Describe the solution you'd like

    There are many packages on applying LaTeX to the website, e.g. Mathjax

    Describe alternatives you've considered

    No response

    Additional context

    No response

    Validations

    Reviewed by ngctnnnn at 2022-02-13 04:04
  • 12. Better support for `type: "module"` from user

    Is your feature request related to a problem? Please describe.

    The outputs ESM entries are not fully compatible with native ESM actually, take the following as example

    https://unpkg.com/browse/[email protected]/dist/client/index.js

    All relative file paths should be ended with correct .js extension, and /index.js can not be omitted anymore.

    That's being said, we should use moduleResolution: "Node16" instead.

    And when the user enables type: "module" in their package.json or .vitepress/package.json, all temporary .js files in .vitepress/.temp would be considered as ESM only, and now it would emit error:

    vitepress v1.0.0-alpha.4
    - building client + server bundles...
    @alauda/chart doesn't appear to be written in CJS, but also doesn't appear to be a valid ES module (i.e. it doesn't have "type": "module" or an .mjs extension for the entry point). Please contact the package author to fix.
    quill-image-uploader doesn't appear to be written in CJS, but also doesn't appear to be a valid ES module (i.e. it doesn't have "type": "module" or an .mjs extension for the entry point). Please contact the package author to fix.
    ✓ building client + server bundles...
    - rendering pages...
    ✖ rendering pages...
    build error:
     ReferenceError: exports is not defined in ES module scope
    This file is being treated as an ES module because it has a '.js' file extension and '/home/jenkins/agent/workspace/frontend/frontend-vision-docs/docs/.vitepress/package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.
        at file:///home/jenkins/agent/workspace/frontend/frontend-vision-docs/docs/.vitepress/.temp/app.js:2:25
        at ModuleJob.run (node:internal/modules/esm/module_job:195:25)
        at async Promise.all (index 0)
        at async ESMLoader.import (node:internal/modules/esm/loader:337:24)
        at async renderPage (file:///home/jenkins/agent/workspace/frontend/frontend-vision-docs/node_modules/vitepress/dist/node/serve-05342c3d.js:39534:25)
        at async build (file:///home/jenkins/agent/workspace/frontend/frontend-vision-docs/node_modules/vitepress/dist/node/serve-05342c3d.js:39853:9)
    error Command failed with exit code 1.
    info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
    script returned exit code 1
    

    Describe the solution you'd like

    Enable moduleResolution: "Node16" and add a package.json into .vitepress/.temp with type: "commonjs" for now, and migrate all outputs files as pure ESM later.

    Describe alternatives you've considered

    We can use .cjs files extensions for files outputs in .vitepress/.temp

    Additional context

    Reference https://devblogs.microsoft.com/typescript/announcing-typescript-4-7/#package-json-exports-imports-and-self-referencing

    Validations

    Reviewed by JounQin at 2022-07-04 09:23
  • 13. `client` and `theme` are not `exported` from `exports` field in `package.json`

    Hi! 👋

    Firstly, thanks for your work on this project! 🙂

    Today I used patch-package to patch [email protected] for the project I'm working on.

    Here is the diff that solved my problem:

    diff --git a/node_modules/vitepress/package.json b/node_modules/vitepress/package.json
    index bc579de..68da516 100644
    --- a/node_modules/vitepress/package.json
    +++ b/node_modules/vitepress/package.json
    @@ -12,7 +12,9 @@
           "import": "./dist/node/index.js",
           "require": "./dist/node-cjs/index.cjs"
         },
    -    "./dist/client/*": "./dist/client/*"
    +    "./dist/client/*": "./dist/client/*",
    +    "./client": "./client.d.ts",
    +    "./theme": "./theme.d.ts"
       },
       "bin": {
         "vitepress": "bin/vitepress.js"
    

    This issue body was partially generated by patch-package.

    Reviewed by JounQin at 2022-07-04 04:24
  • 14. Extending/Mimicing default components in custom theme

    Is your feature request related to a problem? Please describe.

    I want to use the existing structure of VitePress, with kind of the same Layout, but different styling. I was thinking I would just build a custom theme, but it seems like I cannot access e.g. the navbar configs. Or at least I wouldnt know how?

    Describe the solution you'd like

    I would like to know how I can build my own custom theme, using all the default data that i would provide otherwise using the default theme.

    Describe alternatives you've considered

    Using the default theme but changing it up, but I doubt that it's flexible enough. another thing would be to just for vitepress and implementing my own default theme, but I doubt that it's thought to be done like that.

    Additional context

    No response

    Validations

    Reviewed by EtzBetz at 2022-07-03 21:53
()==[::::::::::::: Build static sites in Vue.js, without the hassle

Saber A static website generator built on top of Vue.js and webpack. ❤️ Please sponsor me to support this project or prioritize a feature you want. I

Jul 4, 2022
Vue 2.0 blog template, includes vue-blog-template, vue-blog-admin, vue-blog-h5, node-server-api, remember to star
Vue 2.0 blog template, includes vue-blog-template, vue-blog-admin, vue-blog-h5, node-server-api, remember to star

简介 vue-blog-template 是基于vue2.0,包含了vue-blog-template(PC版)、vue-blog-h5(H5版)、vue-blog-admin(blog后台管理系统)、node-server-api(blog服务端API),用于个人博客的开发和管

Jun 13, 2022
⚡️ The Jamstack framework for Vue.js
⚡️ The Jamstack framework for Vue.js

Gridsome Build super fast, modern websites with Vue.js Gridsome is a Vue-powered static site generator for building CDN-ready websites for any headles

Jun 30, 2022
Server-side rendering engine that renders vue files into html strings

Servue Helping you serve vue with servue Server-side rendering engine that renders vue files into html strings Servue Installation What is servue? Fea

Jun 1, 2022
📝 Minimalistic Vue-powered static site generator
📝 Minimalistic Vue-powered static site generator

VuePress 2 is coming! Please check out vuepress-next. Documentation Check out our docs at https://vuepress.vuejs.org/. Showcase Awesome VuePress vuepr

Jul 2, 2022
Static site generator with Vue and Markdown

Static site generator with Vue and Markdown

Apr 19, 2022
An Open Source Static Site CMS Built With Love & Vue.
An Open Source Static Site CMS Built With Love & Vue.

Saleina CMS A CMS for static site generators. Give non-technical users a simple way to edit and add content to any site built with a static site gener

Dec 28, 2021
Static Site Generated Progressive Web App Glossary eBook for software concepts.

Software Environment Concepts Understand Software Concepts About If you are new to software engineering or you are working in a software company (Mana

Jun 22, 2022
A Nuxt.js template for generating a beautifully robust static site with blog

Awake is a Nuxt.js template for generating a beautifully robust static site with blog. Features Simple modern design based on the Bulma css framework

Dec 2, 2021
A static site build with Nuxt for svenjungnickel.com

svenjungnickel Build Setup # install dependencies $ npm install # serve with hot reload at localhost:3000 $ npm run dev # build for production and l

Jan 10, 2022
A static site build with Nuxt for svenjungnickel.com

svenjungnickel.com Build Setup # install dependencies $ npm install # serve with hot reload at localhost:3000 $ npm run dev # build for production a

Jan 10, 2022
Hau-ai-powered-lms - An AI-powered learning management system
Hau-ai-powered-lms - An AI-powered learning management system

An AI-powered Learning Management System A diagram explaining our core feature w

Feb 16, 2022
This site is built with VuePress. Site content is written in Markdown format located in src.

This site is built with VuePress. Site content is written in Markdown format located in src.

Dec 13, 2021
Static website build by vue3 + vite + vueRouter + typescript + tailwindcss + nginx

hao yang This template should help get you started developing with Vue 3 in Vite. Recommended IDE Setup VSCode + Volar (and disable Vetur) + TypeScrip

Jun 15, 2022
Vue-form-generator: A schema-based form generator component for Vue.js
Vue-form-generator: A schema-based form generator component for Vue.js

vue-form-generator A schema-based form generator component for Vue.js. Demo JSFiddle simple example Features reactive forms based on schemas multiple

Feb 4, 2019
Generator-omp: A generator for msbu omp vue page base on yeoman

generator-omp A generator for msbu omp vue page base on yeoman. Welcome to use MSBU omp generator. ChangeLog Feature yo omp This order can generate a

Dec 14, 2016
Generator-webpack-vue: a simple yeoman generator to build a Webpack dev environment

generator-webpack-vue This is a simple yeoman generator to build a Webpack dev environment. Install You need yeoman to make this generator work: npm i

Sep 17, 2017
Vue Secret Key Generator - a secret key generator for token or other sensitive information hashing purpose
Vue Secret Key Generator - a secret key generator for token or other sensitive information hashing purpose

Vue Secret Key Generator Vue Secret Key Generator is a secret key generator for token or other sensitive information hashing purpose It will add the n

Jun 27, 2021
Jun 25, 2022
Static AST checker for accessibility rules on elements in .vue

eslint-plugin-vue-a11y Static AST checker for accessibility rules on elements in .vue. Installation You'll first need to install ESLint: $ npm i eslin

May 19, 2022