Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »


1.1.5 • Public • Published



Automatically generate files from predefined templates. No boilerplate.

Creating the same files with the same boilerplate code gets tedious after a while. Temples automates the process by giving you the ability to define Handlebars templates, output paths, and the commands to generate these given your CLI arguments.

Example of Temples CLI


Temples is a CLI application. The easiest way to use it is to install it globally:

npm install -g temples


Temples reads from a .temples.yaml file in the root directory of your project.

To run Temples CLI:


Running temples without any arguments will bring you to a CLI that will prompt for the command, and the values for each key defined under prompt in .temples.yaml.

To run Temples without the CLI:

temples [command] [--[key] [value], ...]

command is the name of a command specified in .temples.yaml. Each key and value pair is a mapping for the variables in your templates.


.temples.yaml is the configuration file for Temples. Each command has a list of “temples”, each one defining which template files to use, where to output the compiled files, and default mapping for the key value pairs. You can further configure each command.

The schema for .temples.yaml:

  base: [base_path]
    - [key]
    template: [template_path]
      output: [output_path]
        [key]: [value]


Every path (e.g. template, output) will be relative to the given base. This helps avoid redundancy in specifying path values in temples.


prompt takes in a list of keys that the user will be prompted for when key value arguments are not provided when running Temples.


The list of “temples”, or files to generate when running the command. This can take an arbitrary number if you want to generate more than one file from different templates. For example in React, you might want to create a Javascript file, a css stylesheet, and a test file when generating a new component.

  • template: Path to template file. A template file can have any extension as long as it has text and abides by Handlebars syntax. You could establish your own template conventions like file.template to be explicit.

  • output: Path to output template file after compiling with provided key value pairs from the CLI. Temples will create any non-existent directories along the given path if needed.

  • default: Default key value pairs if not provided by the CLI command.

Note: if you wish to use a key when defining template and output, you can wrap the values with quotes and use the same Handlebars syntax (e.g. “path/to/{{ module }}.js”).


This is an example .temples.yaml file for a React project:

# Generate a new component 
  # All paths are relative to src folder 
  base: ./src
  # Component entry point file 
    template: component.template
      output: "components/{{ name }}/index.js"
        name: Component
  # Component CSS stylesheet 
    template: styles.template
      output: "components/{{ name }}/styles.css"
  # Component test file 
    template: test.template
      output: "components/{{ name }}/test.js"


import React from 'react';
import styles from './styles.css';

const {{ name }} = () => {
    return null;

export default {{ name }};


import React from 'react';
import { render } from '@testing-library/react'

describe('{{ name }}', () => {})

To run the command:

temples component --name Button


Copyright © 2020 - present, Gino Jacob. MIT License.


npm i temples

DownloadsWeekly Downloads






Unpacked Size

16.1 kB

Total Files


Last publish


  • avatar