tajidyakub
8/7/2018 - 4:09 AM

Gruntfile example

Example a Gruntfile, init script of Grunt to automate / chain tasks

let themePath = './dist/xxx';
let pluginPath = './dist/xxxplugin';

module.exports = function (grunt) {
  grunt.initConfig({
    rsync: {
      options: {
        args: ["--verbose"],
        exclude: ["*.DS_Store", ".git*", "*.scss"],
        recursive: true
      },
      deploy: {
        options: {
          src: 'src/themes/nama-template/',
          dest: themePath,
          delete: true
        }
      },
      deployPlugin: {
        options: {
          src: 'src/plugins/slug-plugin/',
          dest: pluginPath,
          delete: true
        }
      }
    },
    compress: {
      themes: {
        options: {
          archive: 'released/nama-themes.zip'
        },
        expand: true,
        cwd: 'dist/nama-themes/',
        src: ['**/*'],
        dest: '/'
      },
      plugins: {
        options: {
          archive: 'released/nama-plugin.zip'
        },
        expand: true,
        cwd: 'dist/nama-plugin/',
        src: ['**/*'],
        dest: '/'
      }
    },
    git: {
      status: {
        options: {
          simple: {
            cwd: './dist/nama-themes/',
            onComplete: function (err, stdout, callback) {
              grunt.config.set('cli output', stdout);
              callback();
            }
          }
        }
      },
      add: {
        options: {
          simple: {
            cwd: './dist/nama-themes',
            args: '.',
            force: true,
            onComplete: function (err, stdout, callback) {
              grunt.config.set('cli output', stdout);
              callback();
            }
          }
        }
      },
      commit: {
        options: {
          simple: {
            cwd: './dist/nama-themes/',
            onComplete: function (err, stdout, callback) {
              grunt.config.set('cli output', stdout);
              callback();
            }
          },
          m: '"Devs"'
        }
      },
      pushLive: {
        options: {
          simple: {
            cwd: './dist/nama-themes/',
            cmd: 'push',
            args: ['live', 'master'],
            onComplete: function (err, stdout, callback) {
              grunt.config.set('cli output', stdout);
              callback();
            }
          }
        }
      },
    }
  })

  // Next one would load plugins
  grunt.loadNpmTasks('grunt-rsync')
  grunt.loadNpmTasks('grunt-contrib-compress')
  grunt.loadNpmTasks('grunt-simple-git')
  // Here is where we would define our task
  grunt.registerTask('deploy', 'Deploy the src folder to dist plugin path' , ['rsync:deploy', 'git:add', 'git:commit', 'git:pushLive'])
  grunt.registerTask('deployPlugin', 'Deploy plugin forlder to dist plugin path', ['rsync:deployPlugin'])
  grunt.registerTask('releaseThemes', 'Compress files in dist/themes', ['compress:themes'])
  grunt.registerTask('releasePlugins', 'Compress files in dist/plugins', ['compress:plugins'])
};