npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ga-mdlint

v1.0.5

Published

Lint rules and CLI tool used for Markdown files at General Assembly

Downloads

7

Readme

General Assembly Markdown Lint CLI Tool

This tool checks for formatting issues in markdown files using GA's markdown linting template. To use it:

  • Create a JavaScript file in the root of your project.

  • Install this tool with npm i ga-mdlint

  • Add this code to your JavaScript file:

    import { runLinter } from "ga-mdlint"
    
    runLinter()
    
  • Run the file!

Rule explanations:

{
  "default": true,

  // MD001/heading-increment
  // Heading levels should only increment by one level at a time
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md001.md
  "MD001": true,

  // MD003/heading-style
  // Heading style
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md003.md
  "MD003": {
    // Heading style
    "style": "atx" // Heading lines start with `#`
  },

  // MD004/ul-style 
  // Unordered list style
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md004.md
  "MD004": {
    // List style
    "style": "dash" // list items start with a dash
  },

  // MD005/list-indent
  // Inconsistent indentation for list items at the same level
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md005.md
  "MD005": true,

  // MD007/ul-indent
  // Unordered list indentation
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md007.md
  "MD007": {
    // Spaces for indent
    "indent": 2,
    // Whether to indent the first level of the list
    "start_indented": false,
  },

  // MD009/no-trailing-spaces
  // Trailing spaces
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md009.md
  "MD009": {
    // Spaces for line break
    "br_spaces": 0, // Spaces should not be used to create breaks
    // Allow spaces for empty lines in list items
    "list_item_empty_lines": false,
    // Include unnecessary breaks
    "strict": true
  },

  // MD010/no-hard-tabs
  // Hard tabs
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md010.md

  // Hard tabs are rendered inconsistently by GitHub. 
  // Tabs should be converted to spaces on save.
  "MD010": {
    // Include code blocks
    "code_blocks": true,
    // Fenced code languages to ignore
    "ignore_code_languages": [],
    // Number of spaces for each hard tab
    "spaces_per_tab": 2
  },

  // MD011/no-reversed-links
  // Reversed link syntax
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md011.md
  "MD011": true, // Ensures link syntax is correct

  // MD012/no-multiple-blanks 
  // Multiple consecutive blank lines
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md012.md
  "MD012": {
    // Consecutive blank lines
    "maximum": 1 
    // Except in a code block, blank lines serve no purpose and do not affect 
    // the rendering of content.
  },

  // MD013/line-length
  // Line length
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md013.md
  "MD013": {
    // Number of characters
    "line_length": 500, 
    // Strongly consider breaking up long lines of text into multiple 
    // lines to increase readability.
    // Number of characters for headings
    "heading_line_length": 80, // Headings should generally be fewer than 80 characters.
    // Number of characters for code blocks
    "code_block_line_length": 80, 
    // Lines in code blocks should be fewer than 80 characters to ensure 
    // readability when browsers are at half screen width on laptop displays.
    // Split code across lines when possible.
    // Include code blocks
    "code_blocks": true,
    // Include tables
    "tables": false,
    // Include headings
    "headings": true,
    // Strict length checking
    "strict": false,
    // Stern length checking
    "stern": false
  },

  // MD014/commands-show-output
  // Dollar signs used before commands without showing output
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md014.md
  "MD014": true,

  // MD018/no-missing-space-atx
  // No space after hash on atx style heading
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md018.md
  "MD018": true,

  // MD019/no-multiple-space-atx
  // Multiple spaces after hash on atx style heading
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md019.md
  "MD019": true,

  // MD020/no-missing-space-closed-atx
  // No space inside hashes on closed atx style heading
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md020.md
  "MD020": true, // Shouldn't exist, but is part of the default config.

  // MD021/no-multiple-space-closed-atx
  // Multiple spaces inside hashes on closed atx style heading
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md021.md
  "MD021": true, // Shouldn't exist, but is part of the default config.

  // MD022/blanks-around-headings
  // Headings should be surrounded by blank lines
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md022.md
  "MD022": {
    // Blank lines above heading
    "lines_above": 1, // Does not apply at the start of a document
    // Blank lines below heading
    "lines_below": 1
  },

  // MD023/heading-start-left
  // Headings must start at the beginning of the line
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md023.md
  "MD023": true,

  // MD024/no-duplicate-heading
  // Multiple headings with the same content
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md024.md
  "MD024": {
    // Only check sibling headings
    "siblings_only": true
  },

  // MD025/single-title/single-h1
  // Multiple top-level headings in the same document
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md025.md
  "MD025": {
    // Heading level
    "level": 1, // Documents can only have one title - the text of an H1 header.
  },

  // MD026/no-trailing-punctuation
  // Trailing punctuation in heading
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md026.md
  "MD026": {
    // Punctuation characters
    "punctuation": ".,;:。,;:"
  },

  // MD027/no-multiple-space-blockquote
  // Multiple spaces after blockquote symbol
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md027.md
  "MD027": true,

  // MD028/no-blanks-blockquote
  // Blank line inside blockquote
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md028.md
  "MD028": true, 
  // Some Markdown parsers will treat two blockquotes separated by one or 
  // more blank lines as the same blockquote, while others will treat them 
  // as separate blockquotes.

  // MD029/ol-prefix
  // Ordered list item prefix
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md029.md
  "MD029": {
    // List style
    "style": "one_or_ordered" 
    // Prefer to specifically number lists, but a list of ones is allowed, 
    // and encouraged for longer lists.
  },

  // MD030/list-marker-space
  // Spaces after list markers
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md030.md
  "MD030": {
    // Spaces for single-line unordered list items
    "ul_single": 1,
    // Spaces for single-line ordered list items
    "ol_single": 1,
    // Spaces for multi-line unordered list items
    "ul_multi": 3,
    // Spaces for multi-line ordered list items
    "ol_multi": 2
    // See: 
    // https://cirosantilli.com/markdown-style-guide/#spaces-after-list-marker 
    // for rationale for the above.
  },

  // MD031/blanks-around-fences
  // Fenced code blocks should be surrounded by blank lines
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md031.md
  "MD031": {
    // Include list items
    "list_items": true
  },

  // MD032/blanks-around-lists
  // Lists should be surrounded by blank lines
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md032.md
  "MD032": true,

  // MD033/no-inline-html
  // Inline HTML
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md033.md
  "MD033": {
    // Allowed elements
    "allowed_elements": [
      "blockquote",
      "code",
      "div",
      "h1",
      "h2",
      "h3",
      "kbd",
      "p",
      "span"
    ]
  },

  // MD034/no-bare-urls
  // Bare URL used
  /// https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md034.md
  "MD034": true,

  // MD035/hr-style
  // Horizontal rule style
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md035.md
  "MD035": {
    // Horizontal rule style
    "style": "---"
  },

  // MD036/no-emphasis-as-heading
  // Emphasis used instead of a heading
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md036.md
  "MD036": {
    // Punctuation characters
    "punctuation": ".,;:!?。,;:!?"
  },

  // MD037/no-space-in-emphasis
  // Spaces inside emphasis markers
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md037.md
  "MD037": true,

  // MD038/no-space-in-code
  // Spaces inside code span elements
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md038.md
  "MD038": true,
  
  // MD039/no-space-in-links
  // Spaces inside link text
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md039.md
  "MD039": true,

  // MD040/fenced-code-language
  // Fenced code blocks should have a language specified
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md040.md
  "MD040": {
    // List of languages
    "allowed_languages": [
      "bash",
      "c",
      "c++",
      "cpp",
      "c#",
      "csharp",
      "css",
      "django",
      "dockerfile",
      "html",
      "java",
      "javascript",
      "json",
      "latex",
      "markdown",
      "pgsql",
      "plaintext",
      "powershell",
      "python",
      "scss",
      "shell",
      "sql",
      "typescript",
      "xml",
      "yaml"
    ],
    // Require language only
    "language_only": true
  },

  // MD041/first-line-heading/first-line-h1
  // First line in a file should be a top-level heading
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md041.md
  "MD041": {
    // Heading level
    "level": 1, // h1 should always be on the first line of a document
    // RegExp for matching title in front matter - we don't use this it's the default
    "front_matter_title": "^\\s*title\\s*[:=]"
  },

  // MD042/no-empty-links
  // No empty links
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md042.md
  "MD042": true,

  // MD043/required-headings
  // Required heading structure
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md043.md
  "MD043": {
    // List of headings
    "headings": ["*"], // We do not enforce docs to have specific headers
    // Match case of headings
    "match_case": false
  },

  // MD044/proper-names
  // Proper names should have the correct capitalization
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md044.md
  "MD044": {
    // List of proper names
    "names": [
      "JavaScript",
      "GitHub"
    ],
    // Include code blocks
    "code_blocks": false,
    // Include HTML elements
    "html_elements": false
  },

  // MD045/no-alt-text
  // Images should have alternate text (alt text)
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md045.md
  "MD045": true,

  // MD046/code-block-style
  // Code block style
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md046.md
  "MD046": {
    // Block style
    "style": "fenced" // Fenced code blocks should always be used.
  },

  // MD047/single-trailing-newline
  // Files should end with a single newline character
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md047.md
  "MD047": true,

  // MD048/code-fence-style
  // Code fence style
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md048.md
  "MD048": {
    // Code fence style
    "style": "backtick" // Fenced code blocks should always use backticks
  },

  // MD049/emphasis-style
  // Emphasis style
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md049.md
  "MD049": {
    // Emphasis style
    "style": "asterisk" // Asterisks should be used for emphasis
  },

  // MD050/strong-style
  // Strong style
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md050.md
  "MD050": {
    // Strong style
    "style": "asterisk" // Asterisks should be used to bold text
  },

  // MD051/link-fragments
  // Link fragments should be valid
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md051.md
  "MD051": true,

  // MD052/reference-links-images
  // Reference links and images should use a label that is defined
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md052.md
  "MD052": {
    // Include shortcut syntax
    "shortcut_syntax": false
  },

  // MD053/link-image-reference-definitions
  // Link and image reference definitions should be needed
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md053.md
  "MD053": {
    // Ignored definitions
    "ignored_definitions": [
      "//"
    ]
  },

  // MD054/link-image-style
  // Link and image style
  // https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md054.md
  "MD054": {
    // Allow autolinks
    "autolink": true,
    // Allow inline links and images
    "inline": true,
    // Allow full reference links and images
    "full": true,
    // Allow collapsed reference links and images
    "collapsed": true,
    // Allow shortcut reference links and images
    "shortcut": false,
    // Allow URLs as inline links
    "url_inline": true
  }
}