Generates package from template for a Lerna Monorepo Project
Install lerna-templater
via npm:
npm i -D lerna-templater
import { TemplaterOptions, templater } from 'lerna-templater';
/**
* @param {string} cwd - The current working directory.
* @param {TemplaterOptions} options - Configuration options for the templater.
*/
templater(cwd, options);
npx lerna-templater -n "example-newpackage" -d "Description for the new example package"
Alternatively, add it to your package.json
scripts:
"scripts": {
"create": "lerna-templater"
}
Then run:
npm run create -- -n "example-newpackage" -d "Description for the new example package"
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__
.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
.
{{{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..
├── __template__/
│ ├── package.json.mustache
│ └── README.md.mustache
├── packages/
├── lerna.json
└── package.json
__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-newpackage"
}
Running:
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
{
"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