@guanghechen/helper-plop v6.0.0-alpha.5
A collection of utility functions for plop templates.
Install
npm
npm install --save-dev @guanghechen/helper-plop
yarn
yarn add --dev @guanghechen/helper-plop
Usage
This package exposed some inquirer question and answer resolver.
Npm package
NpmPackagePreAnswers
:Name Type Description cwd
string
Current workspace directory isMonorepo
boolean
Whether if this package under a monorepo NpmPackagePromptsAnswers
:Name Type Description packageName
string
Npm package name packageAuthor
string
Package author packageVersion
string
Package version packageDescription
string
Package description packageLocation
string
Package location (path relative to the current directory) NpmPackageData
:Extended
NpmPackagePreAnswers
andNpmPackagePromptsAnswers
With following Additional properties.Name Type Description packageUsage
string
Package usage repositoryName
string
Git repository name repositoryHomepage
string
Git repository homepage
Example
I recommend you use the following template directory structure:
├── boilerplate/
│ ├── package.json.hbs
│ ├── README.md.hbs
│ ├── rollup.config.js.hbs
│ ├── src
│ │ └── index.ts.hbs
│ ├── tsconfig.json.hbs
│ ├── tsconfig.settings.json.hbs
│ └── tsconfig.src.json.hbs
├── node_modules/
├── cli.js
├── index.js
├── package.json
└── README.md
Where the index.js
exposed a default plop config, such as:
const {
createNpmPackagePrompts,
resolveNpmPackageAnswers,
resolveNpmPackagePreAnswers,
} = require('@guanghechen/helper-plop')
const path = require('path')
const manifest = require('./package.json')
module.exports = async function (plop) {
const preAnswers = await resolveNpmPackagePreAnswers()
const defaultAnswers = { packageVersion: manifest.version }
const { cwd, isMonorepo } = preAnswers
const prompts = await createNpmPackagePrompts(preAnswers, defaultAnswers)
plop.setGenerator('ts-package', {
description: 'create template typescript project',
prompts: [...prompts],
actions: function (_answers) {
const answers = resolveNpmPackageAnswers(preAnswers, _answers)
answers.toolPackageVersion = manifest.version
const resolveSourcePath = p =>
path.normalize(path.resolve(__dirname, 'boilerplate', p))
const resolveTargetPath = p =>
path.normalize(path.resolve(answers.packageLocation, p))
const relativePath = path.relative(answers.packageLocation, cwd)
// Assign resolved data into plop templates.
Object.assign(_answers, answers)
return [
{
type: 'add',
path: resolveTargetPath('package.json'),
templateFile: resolveSourcePath('package.json.hbs'),
},
{
type: 'add',
path: resolveTargetPath('README.md'),
templateFile: resolveSourcePath('README.md.hbs'),
},
!isMonorepo && {
type: 'add',
path: resolveTargetPath('rollup.config.js'),
templateFile: resolveSourcePath('rollup.config.js.hbs'),
},
].filter(Boolean)
},
})
}
And the cli.js
exposed a Node.js CLI script, such as:
#! /usr/bin/env node
const { launch } = require('@guanghechen/helper-plop')
const path = require('path')
launch(
process.argv,
args => ({
configPath: args.plopfile || path.join(__dirname, 'index.js'),
})
)
Related
2 months ago
3 months ago
4 months ago
5 months ago
5 months ago
6 months ago
7 months ago
8 months ago
9 months ago
9 months ago
9 months ago
9 months ago
10 months ago
10 months ago
7 months ago
6 months ago
1 year ago
1 year ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago