Setup Ts Doc and Angular Doc and bundle size analyser

If required from the client we need to be able to generate a documentation for the project. To do this we should be able to provide TypeScript and Angular documentation through in code annotations/comments.

TypeScript documentation

TypeScript documentation should be generated using Typedoc (http://typedoc.org/). Just install it as a dev dependency to your project:

npm i --save-dev typedoc

Add a 'typedoc.js' script under the 'scripts' folder of your project, where you invoke the Typedoc task (you can find more info on the available options here http://typedoc.org/guides/usage/):

const fs = require('fs');
const typedoc = require('typedoc');

const options = {
  emitDecoratorMetadata: true,
  exclude: '**/+(*.spec.ts)',
  excludePrivate: true,
  experimentalDecorators: true,
  ignoreCompilerErrors: true,
  mode: 'modules',
  module: 'commonjs',
  moduleResolution: 'node',
  out: 'docs/js',
  preserveConstEnums: true,
  stripInternal: true,
  suppressExcessPropertyErrors: true,
  suppressImplicitAnyIndexErrors: true,
  target: 'ES5',
};

const inputDirs = ['./src'];

const typedocApp = new typedoc.Application(options);
const src = typedocApp.expandInputFiles(inputDirs);
const project = typedocApp.convert(src);

console.log('Generating HTML typedocs');
typedocApp.generateDocs(project, options.out);

Then add an npm script to 'package.json' to invoke the script above (directly invoking typedoc binary never worked for me):

"doc:js": "node scripts/typedoc.js"

Documentation is generated according to doc comments as described here http://typedoc.org/guides/doccomments/.

Angular documentation

Angular documentation should be generated using Compodoc (https://github.com/compodoc/compodoc). Just install it as a dev dependency to your project:

npm i --save-dev @compodoc/compodoc

and add an npm script to 'package.json' to invoke it:

"doc:angular": "compodoc [--disablePrivate] [--disableInternal] -p tsconfig.json -d docs/angular/"
  • '--disablePrivate' and '--disableInternal' are optional and are needed to exclude private members/functions.

  • '-p' points to the typescrypt configuration files (usually 'tsconfig.json' in the project root dir).

  • '-d' points to the directory where docs will be created.

Moreover, you can add another script which will check for documentation coverage and will fail if some thresholds are not met:

"doc:angular-cov": "npm run doc:angular -- --coverageTest <min-overall-coverage> --coverageMinimumPerFile <min-coverage-per-file>"

Documentation is generated according to doc comments already present for the TypeScript documentation.

Last updated

Was this helpful?