Doctor logo

Upcoming version: v2.0.0

  • **Breaking**: Doctor now requires Node.js 22.13.0 or higher.
  • Full refactoring to support the latest version of the CLI for Microsoft 365.
  • New `doctor status` command to see which pages are new, modified, deleted, or unchanged before publishing.
  • Publish state is stored on the site (`Shared Documents/.doctor/state.json` by default) and saved after each page, so a failed run can resume where it left off.
  • **Breaking**: unchanged pages are skipped by default. Use `--forceAll` to reprocess all pages like in previous versions.
  • **Breaking**: the `siteDesign.theme` is no longer applied automatically. Use the new `--applyTheme` flag to apply it.
  • **Breaking**: the `certificateBase64Encoded` option is renamed to `certificate`, which accepts the path to your certificate file (`.pfx`, `.p12`, or `.pem`) as well as its base64 encoded contents.
  • New pre-process validation which checks the markdown files for duplicate slugs, missing titles, broken localization references, and front matter parse errors before any SharePoint call is made. Can be skipped with `--skipPrecheck`.
  • New `--verbose` flag for extended logging output, and `--timingDetails` to show per-page timing statistics after a publishing run.
  • New `--disableStatePersistence` and `--stateFile` options to disable or relocate the state file.
  • New `--skipExisting` alias for the `--skipExistingPages` option.
  • New `--commandTimeout` option to configure the timeout of each command execution, which defaults to 2 minutes.
  • Page processing messages now show a `[x/total]` progress counter and the total publishing time is always shown.
  • Fix: navigation and link processing no longer fail on pages without a `title` or `slug` in their front matter.
  • #58: New `doctor workflow` command which generates the `.github/workflows/doctor.yml` GitHub Actions workflow to publish your documentation.
  • #104: New `mermaid` shortcode to render [Mermaid](https://mermaid.js.org/) diagrams on your pages.
  • #112: Progress, log, and error messages now show the file path relative to the current folder instead of only the file name, so pages that share a name (like `index.md`) can be told apart. Failed pages are also listed by path in the publishing summary.
  • #171: **Breaking**: certificate authentication is now the only supported authentication type. The `deviceCode` type is removed, as it signs you in as a user which does not work for all the APIs Doctor calls, and the `password` type is removed as it is no longer supported by the CLI for Microsoft 365. The `--appId`, `--tenant`, and `--certificate` options are now required.
  • #192: Fix: the site logo is now resolved relative to the configured folder instead of the current working directory.

npm @estruyf/doctor@latest npm @estruyf/doctor@next

Doctor was originally created for having a uniformal way of providing the documentation internally at Valo Solutions. The main driver for doctor was to dogfood the Valo products and make it easier for users to maintain documentation on SharePoint.

As we understand that it is not the best experience for developers to write documentation on SharePoint, we created this tool to simplify the process. Doctor allows developers to use tools/applications they are used to, like VSCode and Markdown, and still provide the information on your SharePoint environment.

Doctor follows the concept of many Static Site Generators. These generators make it possible to write your articles/documentation in Markdown and convert them to HTML files.

Doctor is a bit different, as instead of creating HTML files, it makes SharePoint pages instead.

Under the hood, it makes use of the CLI for Microsoft 365.

Today doctor is maintained by Elio Struyf and Dmitriy Van der Elst.
Feel free to join the project if you have interest in.

Found an issue or have feedback?

If you want to submit an issue or provide feedback about the project. Feel free to do so by starting a new discussion or issue in the Doctor repository.

Submit an issue or provide feedback