https://github.com/rdarida/lerna-templater
Generates package from template for a Lerna Monorepo Project
https://github.com/rdarida/lerna-templater
generator lerna package template
Last synced: 4 months ago
JSON representation
Generates package from template for a Lerna Monorepo Project
- Host: GitHub
- URL: https://github.com/rdarida/lerna-templater
- Owner: rdarida
- License: mit
- Created: 2021-10-27T15:08:16.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2026-03-10T08:15:33.000Z (4 months ago)
- Last Synced: 2026-03-10T15:52:45.593Z (4 months ago)
- Topics: generator, lerna, package, template
- Language: TypeScript
- Homepage: https://rdarida.github.io/lerna-templater/
- Size: 1.43 MB
- Stars: 2
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README

# lerna-templater
Generates package from template for a Lerna Monorepo Project
## Installation
Install **`lerna-templater`** via **[npm](https://npmjs.org/package/lerna-templater)**:
```sh
npm i -D lerna-templater
```
## Usage
### Importing in a script
```ts
import { TemplaterOptions, templater } from 'lerna-templater';
/**
* @param {string} cwd - The current working directory.
* @param {TemplaterOptions} options - Configuration options for the templater.
*/
templater(cwd, options);
```
### Using as a CLI tool
```sh
npx lerna-templater -n "example-newpackage" -d "Description for the new example package"
```
Alternatively, add it to your `package.json` scripts:
```json
"scripts": {
"create": "lerna-templater"
}
```
Then run:
```sh
npm run create -- -n "example-newpackage" -d "Description for the new example package"
```
## API
### `templater(cwd, options)`
Generates a new package using a template. The package is created in the directory **`cwd`/`options.packages`/`options.name`**, using the template from **`cwd`/`options.template`**.
### `TemplaterOptions`
- **`name`** (**string**, **required**) - The name of the new package.
- **`description`** (**string**, optional) - A description for the package.
- **`scope`** (**string**, optional) - The package scope. Defaults to the scope in the main `package.json`.
- **`packages`** (**string**, optional) - The relative path to the packages directory. Defaults to the first entry in `lerna.json`'s `packages` array.
- **`template`** (**string**, optional) - The relative path to the template directory. Defaults to `__template__`.
## Templating with Mustache
**lerna-templater** uses [Mustache.js](https://npmjs.org/package/mustache) for templating. Files with the `.mustache` extension in the template directory are rendered and saved without the extension. For example, `package.json.mustache` becomes `package.json`.
### Available template variables
- `{{{name}}}` - The package name.
- `{{{description}}}` - The package description.
- `{{{scope}}}` - The package scope.
- `{{{packages}}}` - The relative path to the packages directory.
- `{{{template}}}` - The relative path to the template directory.
- `{{{version}}}` - The package version.
- `{{{repoDir}}}` - The package's relative path in the repository.
## Example
### Directory structure
```
.
├── __template__/
│ ├── package.json.mustache
│ └── README.md.mustache
├── packages/
├── lerna.json
└── package.json
```
### Template files
#### `__template__/package.json.mustache`
```json
{
"name": "{{{scope}}}{{{name}}}",
"description": "{{{description}}}",
"version": "{{{version}}}",
"repository": {
"directory": "{{{repoDir}}}"
}
}
```
#### `__template__/README.md.mustache`
```md
# {{{name}}}
{{{description}}}
```
#### `lerna.json`
```json
{
"packages": [
"packages/*"
],
"version": "0.0.0"
}
```
#### `package.json`
```json
{
"name": "@examplescope/example-newpackage"
}
```
### Output
Running:
```sh
npx lerna-templater -n "example-newpackage" -d "Description for the new example package" -s "@examplescope"
```
Generates:
- `packages/example-newpackage/`
- `package.json` and `README.md` inside `packages/example-newpackage`
#### `package.json`
```json
{
"name": "@examplescope/example-newpackage",
"description": "Description for the new example package",
"version": "0.0.0",
"repository": {
"directory": "packages/example-newpackage"
}
}
```
#### `README.md`
```md
# example-newpackage
Description for the new example package
```
Resources
- [Documentation](https://rdarida.github.io/lerna-templater/)