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'])
};