node.js - How to host jsdoc / apidoc on Express.js -
im using http://apidocjs.com/ create public documentation express.js api building. question is, how use express.js route , serve documentation?
here's express server setup:
/** load config globally defined __config * @requires fs */ var fs = require('fs'); __config = json.parse(fs.readfilesync('config/config.json')); /** custom logging moduele * @requires ninja_modules/jacked-logger */ log = require('./ninja_modules/jacked-logger'); /** configure express server * @requires express * @param {function} callback configures server */ var express = require('express'); var app = express(); app.configure(function() { /** sets default public directory */ app.use(express.static(__dirname + '/public')); /** sets root views directory */ app.set('views', __dirname + '/public/views'); /** compress response data gzip / deflate. */ app.use(express.compress()); /** request body parsing middleware supporting json, urlencoded, , multipart requests. */ app.use(express.bodyparser()); /** compress response data gzip / deflate. */ app.use(express.methodoverride()); /** set express router */ app.use(app.router); /** .html files, ejs = embedded javascript */ app.engine('html', require('ejs').renderfile); /** default view engine name views rendered without extensions */ app.set('view engine', 'html'); /** custom error logging * @requires ninja_modules/jacked-logger * @param {object} err - error object * @param {object} req - reqiuest object * @param {object} res - response object * @param {function} next - go next error */ app.use(function(err, req, res, next) { log.error(err.stack); res.status(500); next(err); }); }); /** set express listen port defined in configuration file */ var appserver = app.listen(__config.port, function(){ log.sys("express server listening on port " + appserver.address().port + " in " + app.settings.env + " mode"); }); // add documentation app.use('/api', express.static(__dirname + '/public/documentation/api')); app.use('/dev', express.static(__dirname + '/public/documentation/developer'));;
here's grunt file use create documentation:
'use strict'; module.exports = function(grunt) { grunt.initconfig({ jsdoc : { dist : { src: ['*.js', 'config/*.json', 'ninja_modules/*.js','workers/*.js'], options: { destination: 'public/documentation/developer', private: true } } }, apidoc: { ninjapi: { src: 'router/', dest: 'public/documentation/api/', options: { includefilters: [ ".*\\.js$" ] } } } }); grunt.loadnpmtasks('grunt-jsdoc'); grunt.loadnpmtasks('grunt-apidoc'); grunt.registertask('default', ['jsdoc','apidoc']); }
does know how can host documentation without declaring app.get('.. every page? tutorial somewhere great.
thanks in advance.
you don't need declare routes serving every static file.
this should enough:
app.use('/api', express.static(__dirname + '/public/documentation/api'));
but if public/documentation/api
directory not contain index file, you'll request error.
so instead, allows browse directories:
app.use('/api', express.static(__dirname + '/public/documentation/api')); app.use('/api', express.directory(__dirname + '/public/documentation/api'));
Comments
Post a Comment