
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
A README.md generator library.
npm install readme-md
NOTE: This library exports both CJS and ESM modules.
import readme from 'readme-md';
const pkg = {
name: 'my-awesome-package',
description: 'An awesome package.',
type: 'module',
license: 'MIT',
scripts: {
test: 'jest'
}
};
readme({ pkg });
// > my-awesome-package
// > ==================
// > An awesome package.
// >
// > Install
// > -------
// > ```sh
// > npm install my-awesome-package
// > ```
// >
// > Usage
// > -----
// > ```js
// > import myAwesomePackage from 'my-awesome-package';
// > ```
// >
// > Testing
// > -------
// > ```sh
// > npm test
// > ```
// >
// > License
// > -------
// > The MIT License. See the license file for details.
import readme from 'readme-md';
const pkg = {
name: 'my-awesome-package',
description: 'An awesome package.',
type: 'module',
license: 'MIT',
scripts: {
test: 'jest'
},
engines: {
yarn: '1.x'
}
};
const additionalSections = [
{
position: 'before:Install',
title: 'Greetings',
body: 'Hello world!'
}
];
const badges = [
{
alt: 'Build Status',
image: 'https://img.shields.io/github/actions/workflow/status/jbenner-radham/node-readme-md/ci.yaml?branch=main&logo=github&style=flat',
link: 'https://github.com/jbenner-radham/node-readme-md/actions/workflows/ci.yaml'
}
];
const licenseLink = 'LICENSE';
readme({ pkg, additionalSections, badges, licenseLink });
// > my-awesome-package
// > ==================
// > [](https://github.com/jbenner-radham/node-readme-md/actions/workflows/ci.yaml)
// >
// > An awesome package.
// >
// > Greetings
// > ---------
// > Hello world!
// >
// > Install
// > -------
// > ```sh
// > yarn add my-awesome-package # Or alternatively: `npm install my-awesome-package`
// > ```
// >
// > Usage
// > -----
// > ```js
// > import myAwesomePackage from 'my-awesome-package';
// > ```
// >
// > Testing
// > -------
// > ```sh
// > yarn test # Or alternatively: `npm test`
// > ```
// >
// > License
// > -------
// > The MIT License. See the [license file](LICENSE) for details.
import readme, { type ReadmeConfig } from 'readme-md';
const config: ReadmeConfig = {
pkg: {
name: 'my-awesome-package',
description: 'An awesome package.',
type: 'module',
license: 'MIT',
scripts: {
test: 'jest'
},
engines: {
yarn: '1.x'
}
},
additionalSections: [
{
position: 'before:Install',
title: 'Greetings',
body: 'Hello world!'
}
],
badges: [
{
alt: 'Build Status',
image: 'https://img.shields.io/github/actions/workflow/status/jbenner-radham/node-readme-md/ci.yaml?branch=main&logo=github&style=flat',
link: 'https://github.com/jbenner-radham/node-readme-md/actions/workflows/ci.yaml'
}
],
licenseLink: 'LICENSE'
};
readme(config);
// > my-awesome-package
// > ==================
// > [](https://github.com/jbenner-radham/node-readme-md/actions/workflows/ci.yaml)
// >
// > An awesome package.
// >
// > Greetings
// > ---------
// > Hello world!
// >
// > Install
// > -------
// > ```sh
// > yarn add my-awesome-package # Or alternatively: `npm install my-awesome-package`
// > ```
// >
// > Usage
// > -----
// > ```js
// > import myAwesomePackage from 'my-awesome-package';
// > ```
// >
// > Testing
// > -------
// > ```sh
// > yarn test # Or alternatively: `npm test`
// > ```
// >
// > License
// > -------
// > The MIT License. See the [license file](LICENSE) for details.
import type { PackageJson } from 'type-fest';
/**
* Generates a readme document based upon the provided config.
*/
export default function readme(config?: ReadmeConfig): string;
export interface ReadmeConfig {
/**
* Additional sections to add to the readme.
*/
additionalSections?: Section[];
/**
* Badges to add to the readme.
*/
badges?: Badge[];
/**
* Add a hero image to the readme, below the description.
*/
heroImage?: HeroImage;
/**
* While the license is derived from the `pkg.license` option this specifies
* a link target to the license itself. If defined as `true` it will default
* to setting the link target to "LICENSE". Please note that if
* `pkg.license` is not defined this setting will have no effect.
*/
licenseLink?: boolean | string;
/**
* The contents of a `package.json` to parse to generate the readme.
*/
pkg?: PackageJson;
/**
* Whether the package should be shown as being installed as a dev
* dependency in the "Install" section of the readme. Defaults to `false`.
*/
preferDev?: boolean;
/**
* The package manager used in the "Install" and "Testing" sections defaults
* to npm. However, this can be changed by specifying a package manager
* (pnpm, Yarn) in `pkg.engines`. If desired set this to `true` to override
* any package manager specified and utilize npm. Defaults to `false`.
*/
preferNpm?: boolean;
/**
* Whether the example code in the "Usage" section should be terminated by
* semicolons. Defaults to `true`.
*/
preferSemicolons?: boolean;
/**
* The type of quotes used in the "Usage" section. Defaults to single
* quotes.
*/
quoteType?: 'backtick' | 'double' | 'single';
/**
* Override any of the default generated sections.
*/
sectionOverrides?: SectionOverrides;
}
export interface Section {
/**
* The position of the section in the readme. If not specified the section
* will be appended onto the end of the readme. If a number is specified it
* can be either positive or negative.
*/
position?: number | PositionDirective;
/**
* The title of the section.
*/
title: string;
/**
* The section body. If not specified it will default to the placeholder
* text.
*/
body?: string;
}
export interface HeroImage {
/**
* The image alt tag.
*/
alt: string;
/**
* The image URL or path.
*/
src: string;
}
/**
* A `PositionDirective` is a string which begins with either "before:" or
* "after:" and the section title to search for.
*
* @example
* { position: 'after:Install' }
* @example
* { position: 'before:License' }
*/
export type PositionDirective = string;
export interface Badge {
/**
* The image alt tag.
*/
alt: string;
/**
* The image URL.
*/
image: string;
/**
* The link target of the image.
*/
link: string;
}
export interface SectionOverrides {
/**
* Override for the "Install" section body text.
*/
install?: string;
/**
* Override for the "Usage" section body text.
*/
usage?: string;
/**
* Override for the "Testing" section body text.
*/
testing?: string;
/**
* Override for the "License" section body text.
*/
license?: string;
}
pnpm test # Or alternatively: `npm test`
The MIT License. See the license file for details.
FAQs
A README.md generator library.
We found that readme-md demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.