zendesk_app_framework_sdk
Version:
The Zendesk App Framework (ZAF) SDK is a JavaScript library that simplifies cross-frame communication between iframed apps and ZAF.
138 lines (133 loc) • 3.37 kB
JavaScript
'use strict';
var path = require('path'),
CACHE_PATH = path.resolve('./tmp/.cache');
module.exports = function (grunt) {
// Show elapsed time at the end
require('time-grunt')(grunt);
// Load all grunt tasks
require('load-grunt-tasks')(grunt);
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
eslint: {
options: {
ignorePattern: ['lib/vendor/*']
},
gruntfile: {
src: 'Gruntfile.js'
},
lib: {
src: ['lib/**/*.js']
},
test: {
src: ['spec/**/*.js']
}
},
copy: {
vendor: {
src: ['bower_components/native-promise-only/lib/npo.src.js'],
dest: 'lib/vendor/native-promise-only.js'
}
},
gluejs: {
options: {
basepath: './lib/',
include: './lib/',
'cache-path': path.join(CACHE_PATH, 'gluejs'),
replace: {
version: '"<%= pkg.version %>"'
}
},
build: {
options: {
export: 'ZAFClient'
},
src: 'lib/**/*.js',
dest: 'build/zaf_sdk.js'
},
test: {
options: {
globalRequire: true
},
src: '<%= gluejs.build.src %>',
dest: 'tmp/test_build.js'
}
},
uglify: {
options: {
mangle: false,
sourceMap: true
},
build: {
files: {
'build/zaf_sdk.min.js': ['<%= gluejs.build.dest %>']
}
}
},
testem: {
default: {
src: [
'<%= gluejs.test.dest %>',
'node_modules/sinon/pkg/sinon.js',
'node_modules/sinon-chai/lib/sinon-chai.js',
'node_modules/chai-as-promised/lib/chai-as-promised.js',
'spec/spec_helper.js',
'spec/**/*_spec.js'
],
options: {
framework: 'mocha+chai',
parallel: 8,
launch_in_ci: ['PhantomJS'],
launch_in_dev: ['PhantomJS', 'Chrome']
}
}
},
newer: {
options: {
cache: path.join(CACHE_PATH, 'newer')
}
},
connect: {
server: {
options: {
port: 9001,
base: 'public'
}
}
},
watch: {
gruntfile: {
files: '<%= eslint.gruntfile.src %>',
tasks: ['eslint:gruntfile']
},
lib: {
files: '<%= eslint.lib.src %>',
tasks: ['build']
},
test: {
files: '<%= eslint.test.src %>',
tasks: ['test']
}
},
bump: {
options: {
files: ['package.json', 'bower.json'],
updateConfigs: ['pkg'],
commit: true,
commitMessage: 'v%VERSION%',
commitFiles: '<%= bump.options.files %>',
createTag: true,
tagName: 'v%VERSION%',
tagMessage: 'v%VERSION%',
push: false,
pushTo: 'origin',
gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d'
}
}
});
grunt.registerTask('test', ['newer:eslint:test', 'copy:vendor', 'gluejs:test', 'testem:ci']);
grunt.registerTask('build', ['newer:eslint:lib', 'copy:vendor', 'gluejs:build', 'uglify:build']);
grunt.registerTask('test_build', ['newer:eslint:test', 'copy:vendor', 'gluejs:test']);
grunt.registerTask('server', ['build', 'connect', 'watch:lib']);
grunt.registerTask('default', 'server');
};