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

design-manual-scraper

v1.1.0

Published

Generate Design Manual components.json by scraping a website through comments.

Downloads

3

Readme

Design Manual Scraper

Generate components.json file for Design Manual capturing HTML comments and their corresponding HTML components from a website.

Usage

Use the keyword @component to flag html comments in your templates. Comments should be written in properly formatted YAML format.

<!-- @component
    name: My Component
    description: this is a description for my component
-->

The immediate next DOM-node after the comment will be used as HTML-source for the component. If you need to capture multiple blocks, see Capture multiple blocks. Any parameter in the component block will be add to the meta object in the output json.

<!-- @component
    name: My Component
-->

<div>This is my component</div>
<div>This isn't</div>

Output file

Output will look something like this.

[
  {
    "meta": {
      "name": "foo",
      "description": "foo description",
      "param": "foo"
    },
    "file": "file.html",
    "output": "<div>this is my component</div>"
  }
]

Examples

You can add an example or multiple examples with the example or examples keyword, where the former is a YAML string and the latter a YAML list. The {{block}} flag will be replaced by the captured block

single example

<!-- @component
    name: My Component
    example: |
        <div class="max-width: 300px">
            {{block}}
        </div>
-->

<p>this is my example</p>

multiple example

<!-- @component
    name: My Component
    examples: 
        - >
            <div class="max-width: 300px">
                {{block}}
            </div>
        - >
            <div class="max-width: 300px">
                {{block}}
            </div>
-->

<p>this is my example</p>

Capture multiple blocks

The capture keyword specifies how many blocks after the comment will be returned. Use capture: all to capture the comments' siblings. Use capture: section to capture all items until the next @component tag.

<!-- @component
    name: My Component
    capture: 3
-->

<div>1</div>
<div>2</div>
<div>3</div>
<div>nope</div>
<div>nope</div>
<!-- @component
    name: My Component
    capture: section
-->

<div>1</div>
<div>2</div>
<div>3</div>
<!-- @component -->
<div>nope</div>
<!-- @component
    name: My Component
    capture: all
-->

<div>1</div>
<div>2</div>
<div>3</div>
<!-- @component -->
<div>yep</div>

Reserved words

  • example for an example block
  • examples for multiple example blocks
  • capture for the number of DOM-nodes to be captured
    • all: the rest of the DOM-nodes within the comments` parent
    • section: the rest of the DOM-nodes within the comments` parent or a new @component comment
    • number: the exact positive number of DOM-nodes

How to use

npm install design-manual-scraper
var scraper = require('design-manual-scraper');

scraper({
    url: 'https://rawgit.com/EightMedia/design-manual-scraper/master/test/fixtures/',
    paths: ['examples.html', 'capture.html', 'yaml.html'],
    keyword: '@component',
    block: '{{block}}',
    output: 'components.json',
    complete: function(components){}
});