# @cspruit/vulcan

> A boilerplate creator and maintainer

Latest version **0.5.2** (published 2020-07-31) · GPL-3.0-or-later license · 0 weekly downloads

## Install

```sh
npm install @cspruit/vulcan
pnpm add @cspruit/vulcan
yarn add @cspruit/vulcan
bun add @cspruit/vulcan
```

Provides the command `vulcan`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.5.2 |
| Published | 2020-07-31 |
| First published | 2020-02-22 |
| Weekly downloads | 0 |
| License | GPL-3.0-or-later |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 8 |
| Unpacked size | 61.7 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Cassandra Spruit |
| Maintainers | cspruit |
| Keywords | boilerplate, generator, javascript, node.js, cli, utility |

## Links

- npm: https://www.npmjs.com/package/@cspruit/vulcan
- Repository: https://github.com/CassandraSpruit/Vulcan
- Homepage: https://github.com/CassandraSpruit/Vulcan#readme
- Issues: https://github.com/CassandraSpruit/Vulcan/issues
- npm.io page: https://npm.io/package/@cspruit/vulcan

## Dependencies (8)

- [ora](https://npm.io/package/ora.md) ^4.0.3
- [meow](https://npm.io/package/meow.md) ^7.0.1
- [fs-extra](https://npm.io/package/fs-extra.md) ^9.0.0
- [inquirer](https://npm.io/package/inquirer.md) ^7.0.4
- [minimatch](https://npm.io/package/minimatch.md) ^3.0.4
- [handlebars](https://npm.io/package/handlebars.md) ^4.7.6
- [configstore](https://npm.io/package/configstore.md) ^5.0.1
- [isomorphic-git](https://npm.io/package/isomorphic-git.md) ^1.7.4

## Alternatives

- [@salesforce/cli](https://npm.io/package/@salesforce/cli.md) — 389.7K weekly downloads
- [@mintlify/cli](https://npm.io/package/@mintlify/cli.md) — 208.9K weekly downloads
- [@grafana/e2e-selectors](https://npm.io/package/@grafana/e2e-selectors.md) — 128.7K weekly downloads
- [mintlify](https://npm.io/package/mintlify.md) — 112.0K weekly downloads
- [@intlayer/cli](https://npm.io/package/@intlayer/cli.md) — 22.8K weekly downloads

## Recent versions

- 0.5.2 (latest) — 2020-07-31
- 0.5.0 — 2020-03-05
- 0.2.1 — 2020-02-23
- 0.2.0 — 2020-02-23
- 0.1.0 — 2020-02-22

## README

[![Build Status](https://travis-ci.com/CassandraSpruit/Vulcan.svg?branch=master)](https://travis-ci.com/CassandraSpruit/Vulcan)
[![npm](https://img.shields.io/npm/v/@cspruit/vulcan)](https://www.npmjs.com/package/@cspruit/vulcan)
[![license](https://img.shields.io/github/license/CassandraSpruit/Vulcan)](https://github.com/CassandraSpruit/Vulcan/blob/master/LICENSE)
[![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/xojs/xo) [![Greenkeeper badge](https://badges.greenkeeper.io/CassandraSpruit/Vulcan.svg)](https://greenkeeper.io/)

# Vulcan

⚒ A CLI boilerplate creator and manager

Easily set up and create any boilerplate code that can be uses multiple times for different projects.
 
## Installation
- Install by running ```npm install -g vulcan``` to install globally.

## Usage

### Creating a Template
In order to start generatating boilerplate code, a template needs to be created first. In a clean directory, stage any files that you want to use. Templating uses [Handlebars](https://handlebarsjs.com/). To call a field you just need to wrap it in {{ }}.

#### Example Templating for a README.md file
```
	# {{projectName}}
	## __{{description}}__
```

### Vulcan config
- **Name**
	- Required
	- Used to create and generate templates, so make it easy to remember and short
- **Fields**
	- Accepts values that will be used in the template
	- Field Properties:
		- description: (_string, required_), displays to the user during creation
		- type: (_string, default: 'string'_), type of question asked to the user. Accepted values: number, list, boolean, string
		- pattern: (_string_), requires input to match RegEx expression. **NOTE: Make sure to leave out the beginning and ending '/'**
		- patternDescription: (_string_), displays to the user if they fail to meet the pattern requirements
		- required: (_boolean_), required to create the template
	- Fields can also just take a string as a shortcut for { description: "some given string", type: string, required: false }
- **Ignore**
	- Accepts a list of [glob](https://en.wikipedia.org/wiki/Glob_(programming)) patterns to _not_ include in the template (aka blacklist)
	- node_modules, .git, package-lock.json not included by default.
- **Files**
	- Accepts a list of [glob](https://en.wikipedia.org/wiki/Glob_(programming)) patterns to exclusively include in the template (aka whitelist)
	- Files will be taken into account first, then the ignore property

#### Example Config
_Config settings can be separate in vulcan.config.js, .vulcanrc, or in as a field in package.json._

```json
	"vulcan": {
		"name": "cli-utility",
		"fields": {
			"pkg": {
				"description": "NPM package name",
				"type": "string",
				"pattern": "^[0-9a-z\\$\\-\\+\\!\\*\\'\\(\\)][0-9a-zA-Z\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)]{0,213}$",
				"patternDescription": "Must match NPM naming scheme (alphanumeric, no spaces, cannot start with a . or _ or capital letter)",
				"required": true
			},
			"description": "Package description",
			"name": "Display name of package",
			"urlName": {
				"description": "URL name of package repo",
				"required": true
			}
		},
		"files": [
			"src",
			"assets",
		],
		"ignore": [
			"*.test.js"
		]
	}
```

## List of Vulcan Templates
- **[CLI Utility](https://github.com/CassandraSpruit/Vulcan-Cli-Utility)** : Generates a very basic node.js CLI utility app

## Contributing
All contributions, suggestions, and issues are welcome!

Check out the [Issues](https://github.com/CassandraSpruit/Vulcan/issues) page.

## License
This project uses [GPL 3.0](https://github.com/CassandraSpruit/Vulcan/blob/master/LICENSE).

---
_Source: https://npm.io/package/@cspruit/vulcan · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
