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: 3 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 3 years ago)
- Default Branch: main
- Last Pushed: 2025-04-07T10:10:28.000Z (3 months ago)
- Last Synced: 2025-04-23T19:16:18.651Z (3 months ago)
- Topics: generator, lerna, package, template
- Language: TypeScript
- Homepage: https://rdarida.github.io/lerna-templater/
- Size: 1010 KB
- Stars: 2
- Watchers: 1
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- 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-newpackageDescription for the new example package
```
Resources
- [Documentation](https://rdarida.github.io/lerna-templater/)