This library contains tools for generating and embedding documentation contents in Markdown documentation.
NOTE: This package is a library intended for use within the microsoft/FluidFramework repository. It is not intended for public use. We make no stability guarantees regarding this library and its APIs.
To run the markdown-magic
script against your Markdown files, run the following from the command line:
npm run markdown-magic [--files <one or more file globs, space-separated>] [--workingDirectory <directory in which to run the script>]
Accepts one or more glob values to match against. Only file names matching the pattern(s) will have their contents parsed and updated.
Uses the globby format.
Default: **/*.md
npm run markdown-magic --files \"docs/*\" \"!docs/README.md\"
Will run on all Markdown contents under the docs
directory, except for !docs/README.md
.
Specifies the directory from which the script will be run. Useful when the directory from which the Node.js process is run is not the hierarchical root from which you wish to run documentation generation.
Default: Node.js
's working directory (i.e. the directory from which the script was executed).
npm run markdown-magic --workingDirectory ../../
Will run the script from two levels higher in the file structure relative to where the npm
script itself was executed.
The following is a list of supported transform pragmas that can be included in your Markdown documentation to automatically generate / embed contents.
To include a transform in your document, use the following syntax:
<!-- AUTO-GENERATED-CONTENT:START (<transform-name>[:<argument-1>=<value-1>[&<argument-2>=<value-2>...&<argument-N>=<value-N>]]) -->
<!-- AUTO-GENERATED-CONTENT:END -->
Can be used to embed contents from another file into the Markdown file.
Arguments:
path
: Relative path from the document to the file being embedded.start
: (optional) First line from the target file to be embedded (inclusive). If positive, the value is relative to the beginning of the file. If negative, the value is relative to the end of the file.end
: (optional) Limit line from the target file to be embedded (exclusive). If positive, the value is relative to the beginning of the file. If negative, the value is relative to the end of the file.
Generates simple "header" contents for a library package README. Contains instructions for installing the package and importing its contents.
Generally recommended for inclusion after a brief package introduction, but before more detailed sections.
Notes:
- This strictly intended as a starter template to remove the need for some handwritten boilerplate. You will still need to fill in semantic and usage information.
- This is effectively just a wrapper around lower-level templates. If you want more fine-grained control over the content structure, we recommend using other templates.
Arguments:
packageJsonPath
: Relative file path to the library package'spackage.json
file. Used for generation of package metadata.- Default:
./package.json
.
- Default:
packageScopeNotice
: (optional) Override the automatic scope detection behavior with an explicit scope kind:FRAMEWORK
,EXPERIMENTAL
,INTERNAL
,PRIVATE
,TOOLS
, orEXAMPLE
.installation
: Whether or not to include the package "Installation" section.- Default:
true
. - See INSTALLATION_INSTRUCTIONS.
- Default:
devDependency
: Whether or not the package is intended to be installed as a dev dependency.- Default:
false
. - Only observed if
installation
istrue
.
- Default:
apiDocs
: Whether or not to include a section pointing to the library's generated API documentation onfluidframework.com
.- Default:
true
if the package is intended for direct public use.false
otherwise. - Assumes that the package is published, uses API-Extractor, and has its documentation published under
fluidframework.com/apis/<package-name>
. - See API_DOCS
- Default:
Generates a complete starter README.md
file for a Fluid
example app package.
Notes:
- This strictly intended as a starter template to remove the need for some handwritten boilerplate. You will still need to fill in semantic and usage information.
- This is effectively just a wrapper around lower-level templates. If you want more fine-grained control over the content structure, we recommend using other templates.
Arguments:
packageJsonPath
: Relative file path to the library package'spackage.json
file. Used for generation of package metadata.- Default:
./package.json
.
- Default:
gettingStarted
: Whether or not to include a simple "getting started" usage section.- Default:
true
. - See EXAMPLE_GETTING_STARTED.
- Default:
usesTinylicious
: Whether or not running the example app requires running Tinylicious from another terminal.- Default:
true
. - Only observed if
gettingStarted
istrue
.
- Default:
Generates simple "footer" contents for a package README.
Generally recommended for inclusion at the end of the README.
Notes:
- This is strictly intended as a starter template to remove the need for some handwritten boilerplate. You will still need to fill in semantic and usage information.
- This is effectively just a wrapper around lower-level templates. If you want more fine-grained control over the content structure, we recommend using other templates.
Arguments:
packageJsonPath
: Relative file path to the library package'spackage.json
file. Used for generation of package metadata.- Default:
./package.json
.
- Default:
scripts
: Whether or not to include a section listing the package'snpm
scripts.- Default:
false
. - See PACKAGE_SCRIPTS.
- Default:
clientRequirements
: Whether or not to include a section outlining the minimum client requirements for using Fluid Framework packages.- Default:
true
if the package is intended for direct public use.false
otherwise. - See CLIENT_REQUIREMENTS.
- Default:
contributionGuidelines
: Whether or not to include a section enumeratingfluid-framework
's contribution guidelines.- Default:
true
. - See CONTRIBUTION_GUIDELINES.
- Default:
help
: Whether or not to include a simple "help" section, which points the reader to various resources.- Default:
true
. - See HELP.
- Default:
trademark
: Whether or not to include a section containing ourMicrosoft
trademark.- Default:
true
. - See TRADEMARK.
- Default:
Generates a simple "getting started" usage section for a Fluid
example app README.
Arguments:
packageJsonPath
: Relative file path to the library package'spackage.json
file. Used for generation of package metadata.- Default:
./package.json
.
- Default:
usesTinylicious
: Whether or not running the example app requires running Tinylicious from another terminal.- Default:
true
.
- Default:
includeHeading
: Whether or not to include a section heading above the generated contents.- Default:
true
.
- Default:
headingLevel
: Root heading level for the generated section. Must be a positive integer.- Default: 2.
Generates a README section pointing to the library's generated API documentation on fluidframework.com
.
Assumes that the package is published, uses API-Extractor, and has its documentation published under fluidframework.com/apis/<package-name>
.
Arguments:
packageJsonPath
: Relative file path to the library package'spackage.json
file. Used for generation of package metadata.- Default:
./package.json
.
- Default:
includeHeading
: Whether or not to include a section heading above the generated contents.- Default:
true
.
- Default:
headingLevel
: Root heading level for the generated section. Must be a positive integer.- Default: 2.
Generates a README section including package installation instructions.
Assumes that the package is published and can be installed via npm
.
Arguments:
packageJsonPath
: Relative file path to the library package'spackage.json
file. Used for generation of package metadata.- Default:
./package.json
.
- Default:
includeHeading
: Whether or not to include a section heading above the generated contents.- Default:
true
.
- Default:
headingLevel
: Root heading level for the generated section. Must be a positive integer.- Default: 2.
Generates a README section with fluid-framework dependency guidelines.
Assumes that the package is published and can be installed via npm
.
Arguments:
packageJsonPath
: Relative file path to the library package'spackage.json
file. Used for generation of package metadata.- Default:
./package.json
.
- Default:
includeHeading
: Whether or not to include a section heading above the generated contents.- Default:
true
.
- Default:
headingLevel
: Root heading level for the generated section. Must be a positive integer.- Default: 2.
Generates a README section including instructions for how to import from Fluid Framework library packages. Accounts for our use of package.json exports. Arguments:
packageJsonPath
: Relative file path to the library package'spackage.json
file. Used for generation of package metadata.- Default:
./package.json
.
- Default:
includeHeading
: Whether or not to include a section heading above the generated contents.- Default:
true
.
- Default:
headingLevel
: Root heading level for the generated section. Must be a positive integer.- Default: 2.
Generates a "Getting Started" section for an example app README. Arguments:
packageJsonPath
: Relative file path to the library package'spackage.json
file. Used for generation of package metadata.- Default:
./package.json
.
- Default:
usesTinylicious
: Whether or not running the example app requires running Tinylicious from another terminal.- Default:
true
.
- Default:
Generates a section containing minimum client requirements for using Fluid Framework packages.
See the corresponding template here.
Arguments:
includeHeading
: Whether or not to include a section heading above the generated contents.- Default:
true
.
- Default:
headingLevel
: Root heading level for the generated section. Must be a positive integer.- Default: 2.
Generates a section containing our Microsoft
trademark.
See the corresponding template here.
Arguments:
includeHeading
: Whether or not to include a section heading above the generated contents.- Default:
true
.
- Default:
headingLevel
: Root heading level for the generated section. Must be a positive integer.- Default: 2.
Generates a section enumerating fluid-framework
's contribution guidelines.
See the corresponding template here.
Arguments:
includeHeading
: Whether or not to include a section heading above the generated contents.- Default:
true
.
- Default:
headingLevel
: Root heading level for the generated section. Must be a positive integer.- Default: 2.
Generates a simple "help" section, which points the reader to various resources.
See the corresponding template here.
Arguments:
includeHeading
: Whether or not to include a section heading above the generated contents.- Default:
true
.
- Default:
headingLevel
: Root heading level for the generated section. Must be a positive integer.- Default: 2.
Generates a section containing a table enumerating the package's npm
scripts.
Arguments:
packageJsonPath
: Relative file path to the library package'spackage.json
file. Used for generation of package metadata.- Default:
./package.json
.
- Default:
includeHeading
: Whether or not to include a section heading above the generated contents.- Default:
true
.
- Default:
headingLevel
: Root heading level for the generated section. Must be a positive integer.- Default: 2.
Generates a user-facing notice about target audience and support characteristics of the package based on its scope.
By default, it generates the appropriate notice based on the package name's scope (if it's one the system recognizes), but this can be overridden by specifying scopeKind
.
Arguments:
packageJsonPath
: : Relative file path to the library package'spackage.json
file. Used to read the package name's scope (when thescopeKind
argument is not provided).- Default:
./package.json
.
- Default:
scopeKind
: (optional) Override the automatic scope detection behavior with an explicit scope kind:FRAMEWORK
,EXPERIMENTAL
,INTERNAL
,PRIVATE
,TOOLS
, orEXAMPLE
.
There are many ways to contribute to Fluid.
- Participate in Q&A in our GitHub Discussions.
- Submit bugs and help us verify fixes as they are checked in.
- Review the source code changes.
- Contribute bug fixes.
Detailed instructions for working in the repo can be found in the Wiki.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
This project may contain Microsoft trademarks or logos for Microsoft projects, products, or services. Use of these trademarks or logos must follow Microsoft’s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
Not finding what you're looking for in this README? Check out fluidframework.com.
Still not finding what you're looking for? Please file an issue.
Thank you!
This project may contain Microsoft trademarks or logos for Microsoft projects, products, or services.
Use of these trademarks or logos must follow Microsoft's Trademark & Brand Guidelines.
Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.