module-details

Give it the name of an npm module and get tons of up-to-date details about it. Useful for things like building static documentation sites that reference npm modules.

module-details

Give it the name of an npm module and get tons of up-to-date details about it. Useful for things like building static documentation sites that reference npm modules.

Turns out, getting JSON about a package from npm is super simple, for example just open this in a browser: http://registry.npmjs.org/slugger

So, this module returns everything you can see there. Plus a few more goodies...

You'll notice that JSON includes the readme, which is awesome! But, if you actually want to render it into a template for a site somewhere you likely want to do a bit more with that readme.

So, what it does it this:

  • Optionally, removes the first header an attaches it to that module data as a title property (npm modules have a name, but no pretty, properly capitalized titles)
  • Hides anything in your readme between <!-- starthide --> and <!-- endhide --> comments you include in your markdown.
    • This is useful for, say, adding a link to the readme saying where the full docs site is.
    • Or hiding other stuff
  • You can also tell it to always hide sections with a certain title. For example, you may be doing this for lots of repos, to merge into a single site and you always want to hide a section in those readmes if they start with license.
  • Creates a property called toc that it built from the headings in your readme. it includes their text content, heading-level, as well as a link text that can be used to embed an anchor to that corresponding heading.
  • Turns all your headings into github-style headings where you hover and they're links to themselves.
npm install module-details
var getModuleDetails = require('module-details');
 
// you don't have to send it anything other than a callback 
getModuleDetails('slugger', function (errmoduleInfo) {
    // error or moduleInfo 
});
 
// available options and their default settings 
var options = {
    sectionsToRemove: [],
    hideFirstHeading: true
};
 
// you pass options as a second argument 
getModuleDetails('slugger', options, function (errmoduleInfo) {
    // error or moduleInfo 
});

If you like this follow @HenrikJoreteg on twitter.

MIT