module.exports = function(grunt) { | |
'use strict'; | |
var pkg = grunt.file.readJSON('package.json'); | |
// Build artifact base name | |
//<%= pkg.name %>-<%= pkg.version %>-<%= pkg.postfix %>-<%= pkg.releaseCandidate %>' | |
var artifactname = pkg.name + '-' + pkg.version + | |
(pkg.postfix.length > 0 ? "-" : "") + pkg.postfix + | |
(pkg.releaseCandidate.length > 0 ? "-" : "") + pkg.releaseCandidate; | |
var init = { | |
pkg: pkg, | |
banner: grunt.file.read('src/banner.txt'), | |
artifactname : artifactname, | |
browserify: { // convert code from nodejs style to browser style | |
src: { | |
files: { 'build/<%= artifactname %>.js': ['src/index.js'] }, | |
options: { // remove apache license headers before contatenating | |
transform: ['./grunt-config/browserify_transforms/stripheader/stripheader.js'], | |
} | |
} | |
}, | |
uglify: { // uglify and minify the lib | |
options: { | |
sourceMap : true, | |
sourceMapName : 'build/<%= artifactname %>.map', | |
sourceMapIncludeSources : true, | |
}, | |
build: { | |
src: 'build/<%= artifactname %>.js', | |
dest: 'build/<%= artifactname %>.min.js' | |
} | |
}, | |
concat : { // add the apache license headers | |
options : { | |
banner : '<%= banner %>' | |
}, | |
licence: { | |
src: 'build/<%= artifactname %>.js', | |
dest: 'build/<%= artifactname %>.js', | |
}, | |
licence_min: { | |
src: 'build/<%= artifactname %>.min.js', | |
dest: 'build/<%= artifactname %>.min.js', | |
}, | |
}, | |
'copy': { // copy odatajs library files to demo folder withch contains samples | |
forDemo: { | |
files: [{ | |
expand: true, cwd: 'build/', filter: 'isFile', | |
src: ['<%= artifactname %>*.*'], | |
dest: 'demo/scripts/' | |
}] | |
} | |
}, | |
'jsdoc' : { // generate documentation | |
src : { | |
src: ['src/**/*.js'], | |
options: { destination: 'build/doc-src', verbose : false } | |
}, | |
test : { | |
src: ['tests/**/*.js'], | |
options: { destination: 'build/doc-test', verbose : false } | |
} | |
}, | |
'npm-clean': { | |
tmp: { | |
src: [ "build/tmp"] | |
}, | |
doc: { | |
src: ["build/doc"], | |
options: { | |
force: true | |
} | |
}, | |
"doc-test": { | |
src: ["build/doc-test"], | |
options: { | |
force: true | |
} | |
}, | |
}, | |
curl: { | |
'license': { | |
src: { | |
url: 'http://apache.org/licenses/LICENSE-2.0.txt', | |
proxy: 'http://proxy:8080' | |
}, | |
dest: 'LICENSE' | |
} | |
} | |
}; | |
/*** Join local configuration for proxies and local test servers ***/ | |
if (grunt.file.exists('localgrunt.config')) { | |
console.log("merge localgrunt.config"); | |
var localGrundConfig = grunt.file.read('localgrunt.config'); | |
init.connect['test-browser'].proxies = init.connect['test-browser'].proxies.concat(JSON.parse(localGrundConfig).proxies); | |
} | |
/*** Init ***/ | |
grunt.initConfig(init); | |
/*** Load tasks from npm modules ***/ | |
grunt.loadNpmTasks('grunt-browserify'); | |
grunt.loadNpmTasks('grunt-contrib-uglify'); | |
grunt.loadNpmTasks("grunt-contrib-copy"); | |
grunt.loadNpmTasks("grunt-contrib-concat"); | |
grunt.loadNpmTasks('grunt-contrib-compress'); | |
grunt.loadNpmTasks('grunt-curl'); | |
grunt.loadNpmTasks("grunt-jsdoc"); | |
// Start Qunit tests direcly in node js, internally qunit (npm qunit) | |
// is used, no phantomjs instance required | |
grunt.loadNpmTasks('grunt-node-qunit'); | |
//grunt.loadNpmTasks('grunt-contrib-clean'); | |
// Load the custom-* tasks from the grunt-config directory | |
grunt.loadTasks('grunt-config'); | |
// rename some tasks to avoid name clashes with the user tasks | |
grunt.renameTask('clean','npm-clean'); | |
grunt.registerTask('clearEnv', 'clear JAVA_TOOL_OPTIONS', function() { | |
process.env['JAVA_TOOL_OPTIONS'] = ''; | |
}); | |
/*** E N D U S E R T A S K S ***/ | |
grunt.registerTask('clean', ['npm-clean:doc','npm-clean:tmp']); | |
// Runs the license header check to verify the any source file contains a license header | |
grunt.registerTask('license-check', ['custom-license-check']); | |
// Create documentation in /build/doc | |
grunt.registerTask('doc', ['clearEnv', 'jsdoc:src']); | |
grunt.registerTask('doc-test', ['clearEnv', 'jsdoc:test']); | |
// Build the odatajs library | |
grunt.registerTask('build', ['browserify:src', 'uglify:build', 'concat','copy:forDemo']); | |
grunt.registerTask('test-browser', ['configureProxies:test-browser', 'connect:test-browser']); | |
grunt.registerTask('test-node', ['node-qunit:default-tests']); | |
//grunt.registerTask('release', ['build','doc','compress']); | |
grunt.registerTask('update-legal', ['curl:license']); | |
}; | |