Awesome
grunt-slm
slm Slm is a template language for js. Port of Slim but slimmer :)
For potential contributors or maintainers
I don't use it every day, so if you are well versed in Slm and Grunt, I can give you maintainer status.
Getting Started
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-slm --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-slm');
The "slm" task
Overview
In your project's Gruntfile, add a section named slm
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
slm: {
your_target: {
// Target-specific file lists and/or options go here.
},
},
})
Options
You can pass data to template which can be accessed through this
.
Usage Examples
grunt.initConfig({
slm: {
options: {
data: {
author: 'Jane Doe',
year: 2016,
items: [
{
name: 'milk',
price: '$1',
},
{
name: 'bread',
price: '$3',
}
]
}
},
// prefix the specified file
single_file: {
src: 'src/file.slm',
dest: 'dest/index.html'
},
// prefix all files
multiple_files: {
src: 'src/*.slm', // -> src/file1.slm, src/file2.slm
dest: 'dest/' // -> dest/file1.html, dest/file2.html
},
}
});
doctype html
html
head
title My store
meta name="keywords" content="template language"
meta name="author" content=this.author
javascript:
alert('Welcome to my store!')
body
h1 I'm selling some food
#content
p All or this food are organic and healthy ;).
- if this.items.length
table#items
- this.items.forEach(function(item))
tr
td.name = item.name
td.price = item.price
- else
p All food are as gone. Sorry!
div id="footer"
| Copyright © ${this.year} ${this.author}
Thanks
- grunt-autoprefixer for base for this readme :)