To use F# Formatting tools via the command line, you can use the fsdocs
dotnet tool.
[lang=text]
dotnet tool install fsdocs-tool
dotnet fsdocs [command] [options]
This command processes a docs
directory and generates API docs for projects in the solution according to the
rules of API doc generation. The input accepted is described in content.
[lang=text]
fsdocs build
The command line options accepted are:
Command Line Option | Description |
---|---|
--input |
Input directory of content (default: docs ) |
--projects |
Project files to build API docs for outputs, defaults to all packable projects |
--output |
Output Directory (default 'output' for 'build' and 'tmp/watch' for 'watch') |
--noapidocs |
Disable generation of API docs |
--ignoreprojects |
Disable project cracking |
--eval |
Evaluate F# fragments in scripts |
--saveimages |
Save images referenced in docs |
--nolinenumbers |
Don't add line numbers, the default is to add line numbers. |
--parameters |
Additional substitution parameters for templates |
--nonpublic |
The tool will also generate documentation for non-public members |
--nodefaultcontent |
Do not copy default content styles, javascript or use default templates |
--clean |
Clean the output directory |
--help |
Display this help screen |
--version |
Display version information |
--properties |
Provide properties to dotnet msbuild, e.g. --properties Configuration=Release Version=3.4 |
--fscoptions |
Additional arguments passed down as otherflags to the F# compiler when the API is being generated.Note that these arguments are trimmed, this is to overcome a limitation in the command line argument processing. A typical use-case would be to pass an addition assembly reference. Example --fscoptions " -r:MyAssembly.dll" |
--strict |
Fail if docs are missing or can't be generated |
The following command line options are also accepted but it is instead recommended you use settings in your .fsproj project files:
Command Line Option | Description |
---|---|
--sourcefolder |
Source folder at time of component build (<FsDocsSourceFolder> ) |
--sourcerepo |
Source repository for github links (<FsDocsSourceRepository> ) |
--mdcomments |
Assume comments in F# code are markdown (<UsesMarkdownComments> ) |
The command will report on any .fsproj
files that it finds, telling you if it decides to skip a particular file and why.
For example, a project will be skipped if:
-
The project name contains ".Tests" or "test" (because it looks like a test project)
-
The project does not contain
<GenerateDocumentationFile>true</GenerateDocumentationFile>
This command does the same as fsdocs build
but in "watch" mode, waiting for changes. Only the files in the input
directory (e.g. docs
) are watched. A browser will be launched automatically (unless --nolaunch
is specified).
You will need to ensure that the input directory exists, and contains at least index.md
, otherwise the browser will
report an error (e.g. "Problem loading...", "Connection was reset").
[lang=text]
fsdocs watch
Restarting may be necesssary on changes to project files. The same parameters are accepted, plus these:
Command Line Option | Description |
---|---|
--noserver |
Do not serve content when watching. |
--nolaunch |
Do not launch a browser window. |
--open |
URL extension to launch http://localhost:/%s. |
--port |
Port to serve content for http://localhost serving. |
When using the command-line tool a Fuse search index is automatically generated in index.json
.
A search box is included in the default template via an HTML Dialog element.
To add search to your own _template.html
:
- include an HTML element with id
search-btn
- include a
dialog
element - include
fsdocs-search.js
script
<button id="search-btn">Open search dialog</button>
<dialog>
<input type="search" placeholder="Search docs" />
<div class="results">
<ul></ul>
<p class="empty">Type something to start searching.</p>
</div>
</dialog>
<script type="module" src="{`{root}}content/fsdocs-search.js"></script>