npm-template-sync
Keep repository in sync with its template.
Generates pull requests to bring a repository back in sync with its template.
So by making changes to the template and applying npm-template-sync the target project will be updated accoring to the template.
Works with github and bitbucket.
export GITHUB_TOKEN='token providing repositroy write access' # for github repos
npm-template-sync --template aTemplateGithubUser/aRepo myGithubUser/myRepo
Define (initial) properties to be used in the template
export GITHUB_TOKEN='token providing repositroy write access' # for github repos
npm-template-sync --define "description=a very new fantastic module" -t myUser/myTemplate myUser/newModule#aBranch
Create new repository and bind it to aTemplateGithubUser/aRepo
export GITHUB_TOKEN='token providing repositroy write access' # for github repos
npm-template-sync --track --create --template aTemplateGithubUser/aRepo myGithubUser/myRepo
Switch from arlac77/template-github to arlac77/template-arlac77-github template for arlac77/url-cmd, arlac77/uti, arlac77/content-entry and arlac77/repository-provider
export GITHUB_TOKEN='token providing repositroy write access' # for github repos
npm-template-sync --track --template arlac77/template-arlac77-github --template -arlac77/template-github arlac77/url-cmd arlac77/uti arlac77/content-entry arlac77/repository-provider
Merges contents from template branch into destination branch handling some special cases for:
- Licenses - rewriting license years
- line set files like .npmignore and .gitignore - by merging both sets together
- package.json - merge (.*)[Dd]ependencies, engines and scripts
- rollup.conf.*js - copy / rewrite + detect dev dependencies
- *.yaml - merge
- .travis.yml - merge with hints
- *.toml - merge
- *.ini - merge
- *.json - merge
- README.md - merge badges
Some templates
- arlac77/template-cli-app rollup ava travis
- arlac77/template-esm-only ava travis
- arlac77/template-svelte-component svelte rollup testcafe travis
- arlac77/template-svelte-app svelte rollup pkgbuild travis
- arlac77/template-kronos-component template-esm-only with node 14
- arlac77/template-kronos-app node 14 + systemd
API
Table of Contents
- Context
- sortedKeys
- Package
- Merger
- Merger
- EntryMerger
- Template
- ReplaceIfEmpty
- Readme
- MergeLineSet
- Replace
- Skip
- Delete
- normalizeTemplateSources
- jspath
Context
Extends LogLevelMixin(class _Context {})
Context prepared to execute one branch.
Parameters
provider
-
targetBranchName
string -
options
(optional, default{}
)
Properties
execute
Generate Pull Requests.
Returns AsyncIterator<PullRequest>
commits
Generate all commits from the template entry merges.
Returns Commit<AsyncIterator>
executeBranch
Generate Pull Requests.
Returns AsyncIterator<PullRequest> the actual PRs
sortedKeys
order in which json keys are written
Package
Extends Merger
Merger for package.json
properties
Deliver some key properties.
- name
- version
- description
- main
Parameters
-
entry
ContentEntry
Returns Object
Merger
Mergable content
properties
Deliver some key properties.
Parameters
-
entry
ContentEntry
Returns Object extracted properties
commits
Generate commits as result of merging two entries.
Parameters
context
destinationEntry
sourceEntry
options
Merger
Type: Object
Properties
properties
Deliver some key properties.
Parameters
-
entry
ContentEntry
Returns Object extracted properties
commits
Generate commits as result of merging two entries.
Parameters
context
destinationEntry
sourceEntry
options
EntryMerger
Type: Object
Properties
Template
Extends LogLevelMixin(class {})
Parameters
Properties
-
context
Conext -
sources
Set<string> -
toBeRemovedSources
Set<string> -
mergers
Array<Merger> -
branches
Set<Branch> all used branches direct and inherited -
keyBranches
Set<Branch> branches used to define the template
entryMerger
Find a suitable merger for each entry
Parameters
-
entries
Iterator<ContentEntry>
Returns Iterator<[ContentEntry, Merger]>
mergerFor
Find a suitable merger
Parameters
-
name
string of the entry
Returns Merger
_templateFrom
Load all templates and collects the entries.
Parameters
-
sources
string branch names -
inheritencePath
Array<Branch> who was requesting us (optional, default[]
)
Returns Object package as merged from sources
updateUsedBy
Updates usedBy section of the template branch.
Parameters
-
targetBranch
Branch template to be updated -
templateSources
Array<string> original branch identifiers (even with deletion hints) -
options
Object as passed to commitIntoPullRequest
Returns AsyncIterator<PullRequest>
templateFor
Load a template
Parameters
ReplaceIfEmpty
Extends Merger
Overwrites none existing entries from template
Readme
Extends Merger
injects badges into README.md
MergeLineSet
Extends Merger
Replace
Extends Merger
Replace file from template (always)
Skip
Extends Merger
Does not generate destination entry
Delete
Extends Merger
Delete entry.
normalizeTemplateSources
Remove duplicate sources. Sources staring with '-' will be removed
Parameters
Returns Array<string> normalized sources
jspath
Parameters
object
path
cb
install
With npm do:
npm install -g npm-template-sync
# npm-template-sync --help
license
BSD-2-Clause