Skip to content

πŸ”€ Replace {{ variables }} in all your files

Notifications You must be signed in to change notification settings

gsandf/template-file

Repository files navigation

template-file

πŸ”€ Replace {{ variables }} in all your files

Build status Greenkeeper badge

Use variables to replace template strings in any type of file.

✨ Some helpful features:

  • If you use a JavaScript file as the dataFile argument, whatever object the JS exports is used for replacement.
  • If the value of one of the keys is a function, the result of that function is used for replacement.
  • Deeply-nested keys can be used for replacements.

⚠️ NOTE: Keys with a period in the name will not be resolved. {{ user.name }} will look for { user: { name: '' }} but not { 'user.name': ''}. This would be easy to change, but we're leaving as-is for now for slightly better replacement performance (please open an issue if you would like the other behavior).

Usage

template-file <dataFile> <sourceGlob> <destination>

Arguments

  • data - Data file in JSON; used to replace variables in source files
  • sourceGlob - Files to process; see glob for syntax
  • destination - Destination directory where processed files go

Examples

ℹ️ TIP: Remember to place quotes around your arguments (if they contain asterisks, question marks, etc.) to keep your shell from expanding globs before template-file gets to consume them.

Just handle one file:

template-file data.json template.txt build/

Compile all .abc files in src/ to build/:

template-file stuff.json 'src/**/*.abc' build/

Compile all HTML files in src/ to dist/ using the exported result of a JavaScript module:

template-file retrieveData.js 'src/**/*.html' './dist'

API

const { renderString, renderTemplateFile } = require('template-file')

const data = {
  location: {
    name: 'Nashville'
  },
  adjective: 'cool'
}

// Replace variables in string
renderString('{{ location.name }} is {{ adjective }}.', data) // 'Nashville is cool.'

// Replace variables in a file
renderTemplateFile('/path/to/file', data)
  .then(renderedString => console.log(renderedString)) // same as above, but from file

Install

With either Yarn or npm installed, run one of the following:

# If using Yarn, add to project:
yarn add template-file

# ...or install as development dependency:
# (use this command if you're using `template-file` to build your project)
yarn add --dev template-file

# ...*or* install globally to use anywhere:
yarn global add template-file

# If using npm, add to project:
npm install --save template-file

# ...or install as development dependency:
# (use this command if you're using `template-file` to build your project)
npm install --save-dev template-file

# ...*or* install globally to use anywhere:
npm install --global template-file

License

MIT