Simple JavaScript Duckumentation generator.

Related tags

Documentation jsduck
Overview

JSDuck

Warning: JSDuck is no more maintained!

  • If you're looking to adopt a documentation tool, try something else.
  • If you're using JSDuck, consider moving over to something else.
  • Even Sencha itself doesn't use it any more, they use some internal tool, that's not available publicly.
  • If you'd like to take over the maintenance of JSDuck, contact me by creating an issue.

Build Status

API documentation generator for Sencha JavaScript frameworks.

JSDuck aims to be a better documentation generator for Ext JS than the old ext-doc was. It is used by Sencha to document Ext JS 4, Sencha Touch and several other products.

The highlights of JSDuck are Markdown support and keeping you DRY by inferring a lot of information from code. Read the documentation for full overview.

New to JSDuck? Watch introductory talk by Nick Poulden:

SenchaCon 2011 JSDuck talk

Getting it

Standard rubygems install should do:

$ [sudo] gem install jsduck

Or download the Windows binary. When you run into problems, see the installation guide.

Usage

For the simplest test-run just use the --builtin-classes option to write documentation for JavaScript builtin classes like Array, String and Object into docs directory:

$ jsduck --builtin-classes --output docs

To generate docs for Ext JS 4 add path to the corresponding src/ dir:

$ jsduck ext-4.2.1/src --output docs

And to create docs for your own Ext JS project, list the directory with your files in addition to the Ext JS source files (this way the docs of your classes will list all the properties and methods they inherit from Ext JS classes):

$ jsduck ext-4.2.1/src my-project/js --output docs

Unfortunately the above will throw lots of warnings at you, as building the full Ext JS docs requires lots of additional settings. For start you might want to simply ignore all these warnings originating from Ext JS source:

$ jsduck ext-4.2.1/src my-project/js --output docs \
         --warnings=-all:ext-4.2.1/src

But see the Usage guide for more information on building Ext JS 4 docs.

Documenting your code

Read the documentation and take a look at example.js.

Hacking it

See Hacking guide in wiki.

Who's using JSDuck?

These are some that we know of. Want your project listed here? Drop us a line.

Copying

JSDuck is distributed under the terms of the GNU General Public License version 3.

JSDuck was developed by Rene Saarsoo, with contributions from Nick Poulden, Ondล™ej Jirman, Thomas Aylott, Dave Thompson, Ed Spencer, Rob Dougan, Scott Whittaker, Timo Tijhof, Brian Moeskau, Garry Yao, Yasin Okumus, Nicholas Boll and Katherine Chu.

Many thanks goes also to those who have most eagerly reported bugs: Ryan Nauman, Raphael Franchet, atian25, burnnat, Raphael Pigulla, Dmitry Bakaleinik, Alan Lindsay, Corey Butler, Nickolay Platonov, Matt Greer, Richard and Dmitry Pashkevich.

There are lots of others I haven't named here, who have provided their input.

Changelog

See the Releases page.

More questions?

Feel free to post an issue, but read the FAQ first.

You might also like...

A super simple static site generator

Teeny: A simple static site generator โš ๏ธ Disclaimer: This is a tool I built in a couple of hours to generate my personal blog yakkomajuri.github.io. I

Nov 18, 2022

Password Generator - A fast, simple and powerful open-source utility tool for generating strong, unique and random passwords

A fast, simple and powerful open-source utility tool for generating strong, unique and random passwords. Password Generator is free to use as a secure password generator on any computer, phone, or tablet.

Aug 3, 2022

๐ŸŽจ Beautify your github profile with this amazing tool, creating the readme your way in a simple and fast way ๐Ÿš€ The best profile readme generator you will find โšก

๐ŸŽจ Beautify your github profile with this amazing tool, creating the readme your way in a simple and fast way ๐Ÿš€ The best profile readme generator you will find โšก

Demo Profile Readme Generator The best profile readme generator you will find! About | Technologies | Requirements | Starting | Contributing ๐ŸŽฏ About

Jan 1, 2023

A simple powerline like lines generator.

A simple powerline like lines generator.

Powerline.css A quick way to create powerline like effect. It's super simple and super easy to use. Author: @vivekascoder How to Use?? Start with down

Sep 27, 2022

JavaScript OAuth 1.0a signature generator (RFC 5849) for node and the browser

OAuth 1.0a signature generator for node and the browser Compliant with RFC 5843 + Errata ID 2550 and community spec Installation Install with npm: npm

Dec 16, 2022

JavaScript documentation generator for node using markdown and jsdoc

Dox Dox is a JavaScript documentation generator written with node. Dox no longer generates an opinionated structure or style for your docs, it simply

Jan 7, 2023

Javascript Sound Effect Generator

This is a JavaScript library for sound effect generation and is supported on most current browsers. Generation speed is approximately 1s audio = 10ms

Oct 31, 2022

Multicultural Avatar Generator in JavaScript

Multicultural Avatar Generator in JavaScript

Multiavatar represents people from multiple races, multiple cultures, multiple age groups, multiple worldviews and walks of life.

Dec 30, 2022

Unique guid generator pure Javascript.

Guid Generator Create unique Guids. Usage For client Javascript import { Guid } from "../src/guid"; Guid.NewGuid(); // 1q6G3w1U-8F0D-8p9R-7m6m-5b5B7G

Nov 1, 2022

Cross-browser QRCode generator for javascript

QRCode.js QRCode.js is javascript library for making QRCode. QRCode.js supports Cross-browser with HTML5 Canvas and table tag in DOM. QRCode.js has no

Dec 28, 2022

A tiny (108 bytes), secure, URL-friendly, unique string ID generator for JavaScript

A tiny (108 bytes), secure, URL-friendly, unique string ID generator for JavaScript

Nano ID English | ะ ัƒััะบะธะน | ็ฎ€ไฝ“ไธญๆ–‡ | Bahasa Indonesia A tiny, secure, URL-friendly, unique string ID generator for JavaScript. โ€œAn amazing level of sens

Jan 8, 2023

Binary-encoded serialization of JavaScript objects with generator-based parser and serializer

YaBSON Schemaless binary-encoded serialization of JavaScript objects with generator-based parser and serializer This library is designed to transfer l

Aug 9, 2022

JSDoc generator for JavaScript, TypeScript using AI. (VSCode extension)

JSDoc generator for JavaScript, TypeScript using AI. (VSCode extension)

JSDoc generator for JavaScript, TypeScript using AI. (VSCode extension)

Aug 18, 2022

High-quality QR Code generator library in Java, TypeScript/JavaScript, Python, Rust, C++, C.

QR Code generator library Introduction This project aims to be the best, clearest QR Code generator library in multiple languages. The primary goals a

Jan 4, 2023

๐Ÿš€ A RESTful API generator for Node.js

๐Ÿš€ A RESTful API generator for Node.js

A RESTful API generator rest-hapi is a hapi plugin that generates RESTful API endpoints based on mongoose schemas. It provides a powerful combination

Dec 31, 2022

โš›๏ธ ๐Ÿš€ A progressive static site generator for React.

โš›๏ธ ๐Ÿš€ A progressive static site generator for React.

You are viewing the docs for v7 of React Static. You can browse all historical versions via Github branches! React Static A progressive static-site ge

Dec 27, 2022

qr code generator

node-qrcode QR code/2d barcode generator. Highlights Installation Usage Error correction level QR Code capacity Encoding Modes Binary data Multibyte c

Jan 4, 2023
Comments
  • Archive & Alternatives

    Archive & Alternatives

    Since this project is, sadly, no longer maintained (or used by Sencha), perhaps it should be set to an "Archive" state, i.e.

    image


    I'm working on a non-Ext alternative...

    I used JSDuck for years, especially when I did Ext consulting work. I never really found a proper alternative and recently found myself needing something along these lines. JSDuck inspired author/metadoc. It takes a few cues from this project, but is also quite a bit different. It produces JSON instead of HTML (so you can make your own UI), and it's written in JS (Node). It's also still a work in progress.

    I was also inspired to do something similar for Go, and kind of went down the rabbit hole. Now we're actually working on a higher level doc experience called metadoc.io (screenshot is for Go, but you can imagine what JS would be like).

    image

    So, if you're like me and JSDoc just isn't cutting it, follow along :-)

    opened by coreybutler 1
  • Why on code don't useing parse self-contained function

    Why on code don't useing parse self-contained function

    exception code:

    Here's a full backtrace:
    C:/Users/l/AppData/Local/Temp/ocr2F8E.tmp/lib/ruby/gems/1.9.1/gems/rkelly-remix-0.0.4/lib/rkelly/tokenizer.rb:158:in `raw_tokens'
    C:/Users/l/AppData/Local/Temp/ocr2F8E.tmp/lib/ruby/gems/1.9.1/gems/rkelly-remix-0.0.4/lib/rkelly/parser.rb:40:in `parse'
    C:/Users/l/AppData/Local/Temp/ocr2F8E.tmp/lib/ruby/gems/1.9.1/gems/jsduck-5.3.2/lib/jsduck/js/parser.rb:22:in `parse'
    C:/Users/l/AppData/Local/Temp/ocr2F8E.tmp/lib/ruby/gems/1.9.1/gems/jsduck-5.3.2/lib/jsduck/parser.rb:44:in `parse_js_or_css'
    C:/Users/l/AppData/Local/Temp/ocr2F8E.tmp/lib/ruby/gems/1.9.1/gems/jsduck-5.3.2/lib/jsduck/parser.rb:30:in `parse'
    C:/Users/l/AppData/Local/Temp/ocr2F8E.tmp/lib/ruby/gems/1.9.1/gems/jsduck-5.3.2/lib/jsduck/batch_parser.rb:25:in `block in parse'
    C:/Users/l/AppData/Local/Temp/ocr2F8E.tmp/lib/ruby/gems/1.9.1/gems/jsduck-5.3.2/lib/jsduck/util/parallel.rb:26:in `map'
    C:/Users/l/AppData/Local/Temp/ocr2F8E.tmp/lib/ruby/gems/1.9.1/gems/jsduck-5.3.2/lib/jsduck/util/parallel.rb:26:in `map'
    C:/Users/l/AppData/Local/Temp/ocr2F8E.tmp/lib/ruby/gems/1.9.1/gems/jsduck-5.3.2/lib/jsduck/batch_parser.rb:17:in `parse'
    C:/Users/l/AppData/Local/Temp/ocr2F8E.tmp/lib/ruby/gems/1.9.1/gems/jsduck-5.3.2/lib/jsduck/app.rb:41:in `parse'
    C:/Users/l/AppData/Local/Temp/ocr2F8E.tmp/lib/ruby/gems/1.9.1/gems/jsduck-5.3.2/lib/jsduck/app.rb:21:in `run'
    C:/Users/l/AppData/Local/Temp/ocr2F8E.tmp/lib/ruby/gems/1.9.1/gems/jsduck-5.3.2/bin/jsduck:25:in `<main>'
    
    opened by WuYuansen 1
  • Custom

    Custom "inline" tags for Guides

    I haven't found a way to inject (via --tags) option custom guide tag handler. Currently the https://github.com/senchalabs/jsduck/wiki/Guides says about two custom guide tags: {@img and {@link ...

    I would like to create a few custom tags e.g.: {@pdf that would expand into:

    <object width="100%" height="100%" data="" type="application/pdf"> <embed src="" type="application/pdf" /></object>

    or even more generic such {@html ... as html passthrough section.

    Is there any way to achieve it with current implementation?

    opened by mbajolek 2
  • JSDuck & ExtJS6 - Universal app.

    JSDuck & ExtJS6 - Universal app.

    With ExtJS, in a project using both classic & modern toolkits... See attached config json file... It seems that once duck finds the first instance of a class (e.g. in the classic src folders or even the common app source folders) , it ignores any subsequent instance of that class (e.g. in the modern src folders)

    Am I correct or am I missing a vital setting in my json file? jsduck.json.txt Thanks.

    opened by fairport 3
Releases(v6.0.0.beta)
  • v6.0.0.beta(Nov 27, 2013)

    • New SCSS parser using the official SASS parser.
      • Better auto-detection of SCSS variables and mixin parameters.
      • No more scanning of directories for CSS files, only for SCSS and JS files.
    • Auto-detected version data for parameters, listing of methods with new parameters on API docs index page (Issue #480)
    • New --guides-toc-level option to allow multiple levels of headings in guide table of contents (Issue #488).
    • Default list of external classes now only includes the core JavaScript classes. But one can use special syntax --external=@browser to automatically define all standard browser API classes like HTMLElement and XMLHttpRequest as externals.
    • Large refactoring of command line options parsing:
      • Most boolean options are now in --[no-]opt style.
      • Allow comma-separated paths for --tags, --images, --exclude.
    • The tag warning type can now be parameterized to ignore warnings about particular tags (Issue #500)
    • A new @class_icon field for custom tags to allow overriding the icon of a class. (Issue #456)
    • New @component tag (mostly for internal use).
    • Fix crash when parentless sub-cfg in class doc-comment. (Issue #475)
    • Fix incompatible encodings error in RKellyAdapter. (Issue #491)
    • Fix crash when method inherits from cfg. (Issue #494)
    • Eliminate the defunct cat_old_format warning type.
    Source code(tar.gz)
    Source code(zip)
    jsduck-6.0.0-beta.exe(3.20 MB)
  • v5.3.4(Oct 15, 2013)

  • v5.3.3(Oct 9, 2013)

  • v5.3.2(Oct 8, 2013)

  • v5.3.1(Oct 8, 2013)

  • v5.3.0(Oct 8, 2013)

  • v5.2.0(Oct 8, 2013)

  • v5.1.0(Oct 8, 2013)

  • v5.0.1(Oct 8, 2013)

    • Much better error reporting for JS syntax errors.
    • Support for Object.defineProperty().
    • Fix crash with JS sparse arrays.
    • Ignore (required) after @cfg subproperties.
    • Handle JS strings without Ruby's eval(), avoiding crash in certain scenarios.
    • Handle Unicode in anchor links.
    • Fix random inconsistences caused by @inheritdoc processing.
    • Use minimum version numbers when linking gem dependencies.
    Source code(tar.gz)
    Source code(zip)
    jsduck-5.0.1.exe(2.99 MB)
  • v5.0.0(Oct 8, 2013)

  • v5.0.0.beta5(Oct 8, 2013)

  • v5.0.0.beta4(Oct 8, 2013)

    • Replace Esprima.js with pure-ruby JS parser RKelly (for now we're using our own fork of RKelly).
    • Fix crash when optional nameless parameter encountered.
    • Don't auto-load jsduck.json when explicit --config option used.
    • Small style fixes for tables and print.
    Source code(tar.gz)
    Source code(zip)
  • v4.10.4(Oct 8, 2013)

    • Exclude hidden members and constructors from search data.
    • Ensure all @member tags place a member into a class.
    • Allow backtick-quoting of <pre> tags.
    Source code(tar.gz)
    Source code(zip)
  • v5.0.0.beta3(Oct 8, 2013)

    • Redesign of custom member types system (eliminated categories, added icons, improved standard tag parsing).
    • New @fires tag and extensive auto-detection of it.
    • Refactor of auto-detection code.
    • Plus all changes in 4.x line.
    Source code(tar.gz)
    Source code(zip)
  • v4.10.3(Oct 8, 2013)

  • v4.10.2(Oct 8, 2013)

  • v4.10.1(Oct 8, 2013)

  • v4.10.0(Oct 8, 2013)

  • v4.9.0(Oct 8, 2013)

  • v4.8.0(Oct 8, 2013)

  • v5.0.0.beta2(Oct 8, 2013)

    • Export class members as flat list.
    • Remove the following fields from export data: component, subclasses, superclasses, mixedInto, parentMixins.
    • Lots of improvements to @inheritdoc system.
    • Add @localdoc tag for non-inheritable documentation.
    • Lots of improvements to warnings system.
    • Enabling/disabling of warnings within a specific path.
    • Print warnings for undocumented parameters.
    • Add warning type for @tag syntax errors.
    • Add warning type for repeated @tag.
    • Add --css option.
    • Allow overriding of builtin tags.
    • Remove support for old categories.json file syntax.
    Source code(tar.gz)
    Source code(zip)
  • v4.7.1(Oct 8, 2013)

  • v4.7.0(Oct 8, 2013)

    • Remove needless require 'rubygems' statements from source.
    • Use ExecJS to allow other JavaScript runtimes besides therubyracer (e.g. nodejs).
    • Automatically read config from jsduck.json file, if present in current dir.
    • Add "Open in new window" button to basic (non-touch) examples page.
    • Add {DATE} and {JSDUCK} placeholders to --footer.
    • Add --message option for displaying prominent warning message in docs.
    • Add --debug option (equivalent of --template=template --template-links).
    Source code(tar.gz)
    Source code(zip)
    jsduck-4.7.0.exe(4.42 MB)
  • v5.0.0.beta(Oct 8, 2013)

  • v4.6.2(Oct 9, 2013)

    • Add width and height attributes to expanded {@img} tags.
    • Report bad {@img} links in guides.
    • Handle excessive close tags in HTML auto-correction.
    • Remove min-width constraints from Docs app.
    • Improve class name auto-detection (previously only certain classnames got detected).
    • Fix crash when auto-detecting anonymous function.
    • Fix method docs of builtin Date class.
    • Fix corner case when handling indented code.
    Source code(tar.gz)
    Source code(zip)
    jsduck-4.6.2.exe(4.40 MB)
  • v4.6.1(Oct 9, 2013)

    • Allow Markdown files to be used with --welcome option.
    • Avoid flickering of the search results dropdown when search fails.
    • Ignore hidden members when counting of new members in classes overview page.
    • Include ECMAScript 5 methods to the docs created with --builtin-classes option.
    Source code(tar.gz)
    Source code(zip)
    jsduck-4.6.1.exe(4.41 MB)
  • v4.6.0(Oct 9, 2013)

    • Automatically close unclosed HTML tags and print warnings.
    • New option --ignore-html=TAG to allow custom tags to remain unclosed.
    • Remove restriction of only WebKit browsers when using --touch-examples-ui option.
    • Show title text on loading screen (instead of hard-coded "Sencha Docs").
    • Fix @return info going missing when no return type specified.
    • Fix image paths in nested guides.
    • Escape HTML in bogus type definitions.
    • Improve parsing of string in default values and type definitions.
    • Improve wording of 404 page.
    • Improve checking for circular dependencies.
    Source code(tar.gz)
    Source code(zip)
    jsduck-4.6.0.exe(4.40 MB)
  • v4.5.1(Oct 9, 2013)

  • v4.5.0(Oct 9, 2013)

    • Print warnings for unsupported @tags.
    • Allow use of @class before object literal to document all the literal members as members of the class.
    • Much improved handling of @override tag.
    • Auto-detection of event name when this.fireEvent("foo", ...) syntax used.
    • --ext-namespaces now also effects detection of Ext.extend, Ext.override and Ext.emptyFn.
    • Allow wildcard * in --external option to ignore a whole namespace.
    • Ignore all builtin JS error classes in type definitions.
    • Avoid waiting for fonts.google.com to load before the rest of the docs app.
    • Improve loading speed of class docs.
    • Allow negative numbers in type definitions.
    • Fix dependency from therubyracer gem (the newest version fails to compile).
    Source code(tar.gz)
    Source code(zip)
  • v4.4.1(Oct 9, 2013)

ESDoc - Good Documentation for JavaScript

ESDoc ESDoc is a documentation generator for JavaScript. Please try it out! Features Generates good documentation. Measures documentation coverage. In

ESDoc 2.7k Dec 29, 2022
:book: documentation for modern JavaScript

The documentation system for modern JavaScript ?? Current maintenance status Supports modern JavaScript: ES5, ES2017, JSX, Vue and Flow type annotatio

null 5.6k Jan 4, 2023
YUI Javascript Documentation Tool

YUIDoc YUI's JavaScript Documentation engine. Overview YUIDoc is a Node.js application used at build time to generate API documentation for JavaScript

YUI Library 889 Dec 25, 2022
null 147 Dec 8, 2022
Obsidian text generator Plugin Text generator using GPT-3 (OpenAI)

is a handy plugin for Obsidian that helps you generate text content using the powerful language model GP

null 356 Dec 29, 2022
a babel plugin that can transform generator function to state machine, which is a ported version of typescript generator transform

Babel Plugin Lite Regenerator intro This babel plugin is a ported version of TypeScript generator transform. It can transform async and generator func

Shi Meng 6 Jul 8, 2022
Types generator will help user to create TS types from JSON. Just paste your single object JSON the Types generator will auto-generate the interfaces for you. You can give a name for the root object

Types generator Types generator is a utility tool that will help User to create TS Interfaces from JSON. All you have to do is paste your single objec

Vineeth.TR 16 Dec 6, 2022
Simple general purpose Discord Bot Generator

Welcome to HYMITY ?? Simple general purpose Discord Bot Generator ?? Homepage Prerequisites Knowledge in coding! Know how to make Discord Application

Sarvesh M Rao 3 Jul 3, 2022
simple static website generator

mkweb mkweb is a simple static website generator for NodeJS Features: Simple and fast Templates (currently hard coded to "template.html") Markdown wit

Rasmus 48 Nov 6, 2022
A simple boilerplate generator for your node express backend project! ๐Ÿš€

A simple boilerplate generator for your node express backend project! ??

Gunvant Sarpate 35 Sep 26, 2022