1.4.8 • Published 4 months ago

lerna-templater v1.4.8

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

Installation

Install lerna-templater via npm:

npm i -D lerna-templater

Usage

Importing in a script

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

npx lerna-templater -n "New Package Name" -d "Package Description"

Alternatively, add it to your package.json scripts:

"scripts": {
  "create": "lerna-templater"
}

Then run:

npm run create -- -n "New Package Name" -d "Package Description"

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 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

{
  "name": "{{{scope}}}{{{name}}}",
  "description": "{{{description}}}",
  "version": "{{{version}}}",
  "repository": {
    "directory": "{{{repoDir}}}"
  }
}

__template__/README.md.mustache

# {{{name}}}

{{{description}}}

lerna.json

{
  "packages": [
    "packages/*"
  ],
  "version": "0.0.0"
}

package.json

{
  "name": "@examplescope/example-monorepo"
}

Output

Running:

npx lerna-templater -n "example-newpackage" -d "Description for the new example package"

Generates:

  • packages/example-newpackage/
  • package.json and README.md inside packages/example-newpackage

package.json

{
  "name": "@examplescope/example-newpackage",
  "description": "Description for the new example package",
  "version": "0.0.0",
  "repository": {
    "directory": "packages/example-newpackage"
  }
}

README.md

# example-newpackage

Description for the new example package

Documentation

See the full documentation here.

1.4.5

4 months ago

1.4.4

6 months ago

1.4.8

4 months ago

1.4.7

4 months ago

1.4.3

4 years ago

1.4.2

4 years ago

1.4.1

4 years ago

1.3.0

4 years ago

1.2.18

4 years ago

1.2.17

4 years ago

1.2.8

4 years ago

1.2.6

4 years ago

1.2.5

4 years ago

1.2.4

4 years ago

1.2.3

4 years ago

1.2.2

4 years ago

1.2.12

4 years ago

1.2.13

4 years ago

1.2.11

4 years ago

1.2.16

4 years ago

1.2.14

4 years ago

1.2.15

4 years ago

1.2.1

4 years ago

1.1.0

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.0.1

4 years ago