Please consider following this project's author, Hervé Perchec, and consider starring the project to show your ❤ and support.
❔ Why
This project is an alternative of verb. It is partially inspired from and sounds like a "lightweight" version specially designed for README.md file.
👇 Table of contents:
- 🚀 Get started
- ⚙ Configuration
- 🧩 EJS template
- 🌠 Generate README
- 🦾 API
- ⏫ Migrate from v1
- 🧱 Dependencies
- 🧪 Next features
- 🤝 Contributing
- 🎖 License
Engine compatibility
- node 18.19.0
See also browserslist documentation
Install package via npm
npm install -D @hperchec/readme-generator
Initialize
readme-generator init
# Or use npx
npx readme-generator init
This will create a ./.docs/readme
folder at the root of your project
<your_project_root>
├─ ...
├─ .docs
│ └─ readme
│ ├─ config.js
│ ├─ data.js
│ └─ template.md
└─ ...
Add a script to your package.json
file:
{
"scripts": {
# 'npm run readme' will generates your README.md file
"readme": "readme-generator --config ./.docs/readme/config.js",
# ...
}
}
You can pass custom configuration in the ./.docs/readme/config.js
file (all keys are optional).
Example:
/**
* .docs/readme/config.js
*/
module.exports = {
/**
* Output file name: 'README.md' by default
*/
fileName: 'README.md'
}
❕ NOTE: Please check also the documentation to learn more about configuration.
This library uses EJS as template engine.
Export your (ejs) data in the ./.docs/readme/data.js
file.
The exported data object will be merged into default passed to EJS. See also the EJS data relative documentation.
Example:
/**
* .docs/readme/data.js
*/
// Import package.json data
const pkg = require('../../package.json')
const repositoryUrl = pkg.repository.url
const dependencies = pkg.dependencies || {}
const devDependencies = pkg.devDependencies || {}
/**
* Export data for readme file templating
*/
module.exports = {
pkg,
repositoryUrl,
dependencies,
devDependencies
}
Make your own template in ./.docs/readme/template.md
file.
Example:
<%#
README.md template
-%>
# Awesome project!
👇 **Table of contents:**
<!-- toc -->
## Get started
Clone this [repository](<%= repositoryUrl %>) and install via `npm install`
## Dependencies
<details>
<summary>Global</summary>
<%-
await include('common/table.md', {
options: [
['name', 'version'],
...(Object.entries(dependencies))
]
})
%>
</details>
<details>
The <!-- toc -->
special comment will be replaced by auto-generated table of contents. See configuration documentation.
❕ NOTE: You can escape special toc comment by adding a backslash before the exclamation point "!" like:
<\!--
.
There are some partials used by default with EJS:
common/table.md
: render a table withmarkdown-table
package
npm run readme
Enjoy! 👍
❕ NOTE: The README file will be overwritten every time the command is runned.
Consult the API documentation
All configuration keys are now optional
The following have been renamed:
outputName
tofileName
outputPath
todestFolder
Global
name | version |
---|---|
ascii-tree | ^0.3.0 |
ejs | ^3.1.9 |
execa | ^5.1.1 |
fs-extra | ^11.1.1 |
github-slugger | ^1.5.0 |
lodash.merge | ^4.6.2 |
markdown-table | ^1.1.3 |
markdown-toc | ^1.2.0 |
markdown-utils | ^1.0.0 |
prompts | ^2.4.2 |
yargonaut | ^1.1.4 |
yargs | ^17.7.2 |
Dev
name | version |
---|---|
@commitlint/cli | ^17.7.2 |
@commitlint/config-conventional | ^17.7.0 |
@hperchec/jsdoc-plugin-define | ^1.0.1 |
conventional-changelog-cli | ^4.1.0 |
cross-env | ^7.0.3 |
eslint | ^8.51.0 |
eslint-config-standard | ^17.1.0 |
eslint-plugin-disable | ^2.0.3 |
eslint-plugin-import | ^2.28.1 |
eslint-plugin-jsdoc | ^46.8.2 |
eslint-plugin-node | ^11.1.0 |
eslint-plugin-promise | ^6.1.1 |
eslint-plugin-standard | ^4.1.0 |
jsdoc-to-markdown | ^8.0.0 |
lint-staged | ^14.0.1 |
npm-check-updates | ^16.14.5 |
simple-git-hooks | ^2.9.0 |
Peer
name | version |
---|
- presets ? (GitHub/GitLab)
Please check the contributing guidelines
ISC
Made with ❤ by Hervé Perchec
README.md - this file was auto generated with @hperchec/readme-generator. Don't edit it.