4.5.0 • Published 12 months ago

@hperchec/vuepress-jsdoc v4.5.0

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

vuepress-jsdoc

Quality Gate Status npm vercel

This npm package is a command line script, which scans your JavaScript, Vue or Typescript source code and generates markdown files for vuepress with the help of jsdoc-to-markdown and vue-docgen-cli with @hperchec/vue-docgen-template custom template.

CLI ./example

How to

yarn global add vuepress-jsdoc
npm i vuepress-jsdoc -g

Example:

# search code in src and move it to code (./documentation/code) in your vuepress folder (./documentation)
vuepress-jsdoc --source ./src --dist ./documentation --folder code --title API --exclude="**/*/*.test.js"

You can also use npx vuepress-jsdoc, if you want.

Plugin (Dev-Mode) alpha

You can use vuepress-jsdoc also as plugin. This plugin watches you generated files.

// ./documentation/.vuepress/config.js
plugins: [
  [
    require('vuepress-jsdoc').default,
    {
      folder: 'code',
      source: './dist',
      dist: './documentation',
      title: 'API',
      partials: ['./example/partials/*.hbs'],
      readme: './README.md',
      exclude: '**/*.d.ts,**/interfaces.*,**/constants.*,**/cmds.*'
      // Accepts also other jsdoc2md options, see below
    }
  ]
];

Watch-Mode alpha

If you do not want to runvuepress-jsdoc again and again and again. You can simply pass --watch or -w.

Command-Options

Use these options after vuepress-jsdoc.

NameAliasDefaultDescription
--source-s./srcSource folder with .js or .ts files
--dist-d./documentationDestination folder
--folder-f./codeFolder inside destination folder. Gets overwritten everytime
--title-tAPITitle of your documentation
--help-hShow help
--version-vShow current version
--readme-rPath to custom readme file
--exclude-ePattern to exclude files/folders (Comma seperated) - *.test.js,exclude.js more information
--include-ePattern to include files/folders (Comma seperated) - *.test.js,exclude.js more information
--watch-wWatch changes and update markdown files
--rmPattern-rmPattern when removing files. You can ex- and include files. (glob pattern)
--jsDoc-configPath-cPath to JsDoc Config (experimental)
--j2md-example-langjsdoc2markdown example-lang option
--j2md-global-index-formatjsdoc2markdown global-index-format option
--j2md-heading-depthjsdoc2markdown heading-depth option
--j2md-helperjsdoc2markdown helper option
--j2md-member-index-formatjsdoc2markdown member-index-format option
--j2md-module-index-formatjsdoc2markdown module-index-format option
--j2md-name-formatjsdoc2markdown name-format option
--j2md-no-gfmfalsejsdoc2markdown no-gfm option
--j2md-partial-pjsdoc2markdown partial templates (overwrites default ones)
--j2md-pluginjsdoc2markdown plugin option
--j2md-param-list-formatjsdoc2markdown param-list-format option
--j2md-property-list-formatjsdoc2markdown property-list-format option
--j2md-separatorsfalsejsdoc2markdown separators option
--j2md-templatejsdoc2markdown template option
--docgen-configPathPath to vue-docgen-cli Config
--docgen-helperHandlebars helper files to override or extend the default set (similar to --j2md-helper option)
--docgen-partialHandlebars partial files to override or extend the default set (similar to --j2md-partial option)
--docgen-templateHandlebars template file to override default component template (similar to --j2md-template option)

config.js

Inside your generated folder, you can find a config.js. This file includes a complete filetree and an vuepress sidebar tree.

How to configure vuepress

Vuepress is a static site generator by Evan You. You can add all generated documentation files to your existing vuepress project or create a new one.

# First install vuepress
yarn global add vuepress

# Run the CLI
vuepress-jsdoc

# Run vuepress dev server
vuepress dev ./documentation

# Run vuepress build, if you want to ship it
vuepress build ./documentation

Access it via: http://localhost:8080/code/

Now you need the sidebar. Create a .vuepress folder inside the documentation folder and add the following config.js.

config.js:

// auto generated sidebar
const { sidebarTree } = require('../code/config');

module.exports = {
  dest: 'dist',
  locales: {
    '/': {
      title: 'vuepress-jsdoc',
      description: 'Generate jsdoc markdown files for vuepress'
    }
  },
  themeConfig: {
    editLinks: true,
    sidebarDepth: 4,
    docsDir: 'code',
    locales: {
      '/': {
        nav: [
          {
            text: 'Home',
            link: '/'
          }
        ],
        // Add the generated sidebar
        sidebar: Object.assign({}, sidebarTree('Mainpage title'))
      }
    }
  }
};

Custom readme

You can easily add a custom path to your readme by using the --readme ./path/to/file.md parameter. If you move a README.md inside your source folder, it should resolve it automatically. You can set the title by passing it to the sidebarTree('Mainpage title') function inside your ./.vuepress/config.js.

@vuepress comment block

You can add custom meta data to your pages by using the @vuepress block in top level of .js files or in <script> tag in Vue SFC:

/**
 * @vuepress
 * ---
 * title: Your custom title
 * headline: You custom headline
 * ---
 */

Use headline to add a custom h1 title.

More information

Typescript

To use typescript, you have to install these dev-dependencies:

npm install -D typescript jsdoc-babel @babel/cli @babel/core @babel/preset-env @babel/preset-typescript jsdoc-to-markdown

Next, you have to add a jsdoc.json to your project with some settings and add it with the -c parameter. You can find a full working example with all settings inside the ./example folder. The example shows also how to use babel-plugins.

Example

The ./example folder includes a full working vuepress-jsdoc example.

# Install dependencies
npm install

# Run the CLI
vuepress-jsdoc

# Generate docs
npm run docs

# Run dev server
npm run dev

# Generate dist folder
npm run build

Contribute

PRs are always welcome (: