scaffdog
scaffdog is Markdown driven scaffolding tool.
scaffdog
Multiple files can be output in a document, and flexible scaffolding is possible with a simple but powerful template syntax π
Documentation
Visit https://scaff.dog to view the full documentation.
Features
-
π Markdown driven
-
You can define a template with
<h1>
and code block. - It will be a Documetable template !
- Define meta information with extended syntax using Front Matter.
-
You can define a template with
-
ποΈ Intuitive template
- It provides a simple yet powerful template engine inspired by ECMAScript and Go text/template.
- Many built-in helper functions required to define templates are also provided.
-
π Ready to use
-
You can quickly start using
$ scaffdog init
. - Other useful commands are provided for immediate scaffolding.
-
You can quickly start using
-
π
Prettier Integration
- Markdown works very well with Prettier, and the templates maintain beautiful code.
- We also offer a Prettier Plugin for scaffdog’s template engine.
Requirements
- Node.js v14.16.0+
Getting Started
Installation
scaffdog
can be installed globally, but we recommend installing it locally on the project.
$ npm install --save-dev scaffdog
Quick Start
In the following tutorial you can start using scaffdog
immediately !
Setup
By default, it stores the document file and configuration file in the .scaffdog
directory.
Creating directories, configuration file and initial documents can be done with the init
subcommand.
$ npx scaffdog init ? Please enter a document name. component Setup of scaffdog πΆ is complete! β .scaffdog/config.js β .scaffdog/component.md Now you can do scaffold by running `$ scaffdog generate`. Please refer to the following documents and customize it. https://scaff.dog/docs/templates
After running the command, the .scaffdog/component.md
file should have been generated. Rewrite that file as follows:
--- name: 'component' root: '.' output: '.' questions: name: 'Please enter a component name.' --- # `{{ inputs.name | pascal }}/index.ts` ```typescript export * from './{{ inputs.name }}'; ``` # `{{ inputs.name | pascal }}/{{ inputs.name | pascal }}.tsx` ```typescript export type Props = React.PropsWithChildren<{}>; export const {{ inputs.name | pascal }}: React.FC<Props> = ({ children }) => { return ( <div>{children}</div> ); }; ```
Letβs scaffold using the component
document!
$ npx scaffdog generate ? Please select a document. component βΉ Output destination directory: "." ? Please enter a component name. PrettyDog πΆ Generated 2 files! β PrettyDog/index.ts β PrettyDog/PrettyDog.tsx
Congratulations π
The first file was generated.
$ cat PrettyDog/index.ts export * from './PrettyDog'; $ cat PrettyDog/PrettyDog.tsx export type Props = React.PropsWithChildren<{}>; export const PrettyDog: React.FC<Props> = ({ children }) => { return ( <div>{children}</div> ); };
Check out our documentation site to customize your documentation π
Migration
There are important changes in the major update.
- To v2 from v1
- To v1 from v0
See Migration Guide.
Contributing
See CONTRIBUTING.md.
CHANGELOG
See CHANGELOG.md.
License
MIT Β© wadackel