Awesome
charlike
Small, fast and streaming project scaffolder with support for hundreds of template engines and sane defaults
Please consider following this project's author, Charlike Mike Reagent, and :star: the project to show your :heart: and support.
<div id="thetop"></div>If you have any how-to kind of questions, please read the Contributing Guide and Code of Conduct documents.
For bugs reports and feature requests, please create an issue or ping
@tunnckoCore at Twitter.
Project is semantically versioned & automatically released through CircleCI with Standard Release.
<!-- Logo when needed: <p align="center"> <a href="https://github.com/tunnckoCoreLabs/charlike"> <img src="./media/logo.png" width="85%"> </a> </p> -->Table of Contents
(TOC generated by verb using markdown-toc)
Install
This project requires Node.js ^8.10.0 || >=10.13.0 (see Support & Release Policy). Install it using
yarn or npm.
We highly recommend to use Yarn when you think to contribute to this project.
$ yarn add charlike
# or globally
$ yarn global add charlike
CLI
Install it globally or locally and run charlike --help
.
Usage: charlike [name] [description] [flags]
Common Flags:
-h, --help Display this help.
-v, --version Display current version.
Flags:
-n, --name Project's name.
-d, --desc Project description, short for "--project.description".
-o, --owner Usually your GitHub username or organization.
-t, --templates Source templates directory.
--engine Engine to be used in the template files.
--locals Locals for the template files. Support dot notation.
--locals.author.name Project's author name.
--locals.author.email Project's author email. And so on.
--project Project metadata like name, description
--project.name Project name.
--project.description Project description.
--cwd Folder to be used as current working dir.
--ly Shortcut for --locals.license.year (license start year).
--ln Set --locals.license.name.
Examples:
charlike my-new-project --ly 2018 --ln MIT -o myOrg
charlike --project.name foobar --locals.author 'John Snow'
charlike foobar --locals.author.name 'John Snow'
charlike foobar --locals.license 'Apache-2.0' --locals.foo bar
charlike foobar 'This is description'
charlike foobar --project.description 'Some description here'
charlike foobar --desc 'Some description here'
charlike foobar 'Awesome description' --owner tunnckoCoreLabs
charlike --project.name qux --desc 'Yeah descr' --owner tunnckoCore
API
<!-- docks-start -->Generated using docks.
src/index.js
charlike
Generates a complete project using a set of templates.
You can define what "templates" files to be used
by passing settings.templates
, by default it uses ./templates
folder from this repository root.
You can define project metadata in settings.project
object, which should contain
name
, description
properties and also can contain repo
and dest
.
By default the destination folder is dynamically built from settings.cwd
and settings.project.name
,
but this behavior can be changed. If settings.project.repo
is passed, then it will be used
instead of the settings.project.name
.
To control the context of the templates, pass settings.locals
. The default set of locals
includes version
string and project
, author
and license
objects.
Params
settings
{object} the only required isproject
which should be an objectsettings.cwd
{object} working directory to create project to, defaults toprocess.cwd()
settings.project
{object} should containname
,description
,repo
anddest
settings.locals
{object} to pass more context to template filessettings.engine
{string} for different template engine to be used in template files, default islodash
Returns
Promise<object>
if successful, will resolve to object like{ locals, project, dest, options }
Examples
import charlike from 'charlike';
const settings = {
project: { name: 'foobar', description: 'Awesome project' },
cwd: '/home/charlike/code',
templates: '/home/charlike/config/.jsproject',
locals: {
foo: 'bar',
// some helper
toUpperCase: (val) => val.toUpperCase(),
},
};
// the `dest` will be `/home/charlike/code/foobar`
charlike(settings)
.then(({ dest }) => console.log(`Project generated to ${dest}`))
.catch((err) => console.error(`Error occures: ${err.message}; Sorry!`));
<!-- docks-end -->
See Also
Some of these projects are used here or were inspiration for this one, others are just related. So, thanks for your existance!
- @tunnckocore/config: All the configs for all the tools, in one place | homepage
- @tunnckocore/create-project: Create and scaffold a new project, its GitHub repository and… more | homepage
- asia: Blazingly fast, magical and minimalist testing framework, for Today and… more | homepage
- docks: Extensible system for parsing and generating documentation. It just freaking… more | homepage
- git-commits-since: Get all commits since given period of time or by… more | homepage
- gitcommit: Lightweight and joyful
git commit
replacement. Conventional Commits compliant. | homepage - recommended-bump: Calculates recommended bump (next semver version) based on given array… more | homepage
Contributing
Guides and Community
Please read the Contributing Guide and Code of Conduct documents for advices.
For bug reports and feature requests, please join our Spectrum community forum and open a thread there with prefixing the title of the thread with the name of the project if there's no separate channel for it.
Consider reading the Support and Release Policy guide if you are interested in what are the supported Node.js versions and how we proceed. In short, we support latest two even-numbered Node.js release lines.
Support the project
Become a Partner or Sponsor? :dollar: Check the Partner, Sponsor or Omega-level tiers! :tada: You can get your company logo, link & name on this file. It's also rendered on package page in npmjs.com and yarnpkg.com sites too! :rocket:
Not financial support? Okey! Pull requests, stars and all kind of contributions are always welcome. :sparkles:
OPEN Open Source
This project is following OPEN Open Source model
Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is built on collective efforts and it's not strongly guarded by its founders.
There are a few basic ground-rules for its contributors
- Any significant modifications must be subject to a pull request to get feedback from other contributors.
- Pull requests to get feedback are encouraged for any other trivial contributions, but are not required.
- Contributors should attempt to adhere to the prevailing code-style and development workflow.
Wonderful Contributors
Thanks to the hard work of these wonderful people this project is alive! It follows the
all-contributors specification.
Don't hesitate to add yourself to that list if you have made any contribution! ;) See how,
here.
<img src="https://avatars3.githubusercontent.com/u/5038030?v=4" width="120px;"/><br /><sub><b>Charlike Mike Reagent</b></sub><br />💻 📖 💬 👀 🔍 |
---|
Consider showing your support to them. :sparkling_heart:
License
Copyright (c) 2016-present, Charlike Mike Reagent <mameto2011@gmail.com>
& contributors.
Released under the Apache-2.0 License.