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.
TemplaterOptionsname (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-newpackagepackage.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