node package manager

grunt-snakeskin

grunt-snakeskin

Using Snakeskin templates with Grunt.

NPM version Build Status NPM dependencies NPM devDependencies NPM peerDependencies

Install

npm install grunt-snakeskin --save-dev

Usage

Gruntfile.js

module.exports = function (grunt) {
  grunt.initConfig({
    snakeskin: {
      compile: {
        options: {
          exec: true,
          prettyPrint: true
        },
 
        files: {
          'html/': ['test/fixtures/*.ss']
        }
      }
    }
  });
 
  grunt.loadNpmTasks('grunt-snakeskin');
  grunt.registerTask('default', ['snakeskin']);
};

Options

adapter

Type: String

Name of the adaptor, for example:

  • ss2react compiles Snakeskin for React
  • ss2vue compiles Snakeskin for Vue2

adapterOptions

Type: Object

Options for the used adaptor.

exec

Type: Boolean

Default: false

If the parameter is set to true the template will be launched after compiling and the results of it work will be saved.

dext

Type: String

Default: '.html'

Extension of a file with result after template execution (using with exec).

tpl

Type: String

The name of the executable template (if is set exec), if the parameter is not specified, then uses the rule:

%fileName% || main || index || Object.keys().sort()[0];

data

Type: ?

Data for the executable template (if is set exec).

Speed up your build

Do not recompile templates with exec: true option:

grunt.initConfig({
  snakeskin: {
    render: {
      options: {
        exec: true,
      },
 
      files: {
        // Specify compiled template as source 
        'html/': ['compiled/*.ss.js']
      },
 
      // Additional dependencies for grunt-newer 
      deps: ['mycode.js']
    }
  }
});

Compile newer files only

npm install grunt-newer --save-dev

Specify grunt-newer override function in the following way:

var gruntCfg = {
  ...
  newer: {
    options: {
      override: function(detail, include) {
        // Check snakeskin include dependencies 
        if (detail.task === 'snakeskin' && detail.target.includes('compile')) {
          // Build dest path from template source path 
          var dst = SS_BUILD_DIR + '/' + path.basename(detail.path) + '.js';
          if (snakeskin.check(detail.path, dst)) {
            return include(true);
          }
        }
 
        // Check dependencies from target configuration 
        // detail.config was requested: https://github.com/tschaub/grunt-newer/pull/115 
        if (detail.config.deps) {
          for (var i = 0; i < detail.config.deps.length; i++) {
            var fn = detail.config.deps[i];
            var ts = fs.statSync(fn).mtime;
            var difference = detail.time - ts;
            if (difference < this.tolerance) {
              console.log(detail.path + ' has a newer dependency ' + fn);
              return include(true);
            }
          }
        }
 
        return include();
      }
    }
  },
  ...
};

License

The MIT License.