template-file
🔀 Replace {{ variables }} in all your files
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'
}
renderString('{{ location.name }} is {{ adjective }}.', data)
renderTemplateFile('/path/to/file', data)
.then(renderedString => console.log(renderedString))
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