'use strict'; module.exports = function(grunt) { require('load-grunt-tasks')(grunt, { pattern: 'grunt-*', config: 'package.json', scope: 'devDependencies' }); var banner = '// Last time updated: <%= grunt.template.today("UTC:yyyy-mm-dd h:MM:ss TT Z") %>\n\n'; // configure project grunt.initConfig({ // make node configurations available pkg: grunt.file.readJSON('package.json'), concat: { options: { stripBanners: true, separator: '\n', banner: banner }, dist: { src: [ 'dev/head.js', 'dev/common.js', 'dev/draw-helper.js', 'dev/drag-helper.js', 'dev/pencil-handler.js', 'dev/marker-handler.js', 'dev/eraser-handler.js', 'dev/text-handler.js', 'dev/arc-handler.js', 'dev/line-handler.js', 'dev/arrow-handler.js', 'dev/rect-handler.js', 'dev/quadratic-handler.js', 'dev/bezier-handler.js', 'dev/zoom-handler.js', 'dev/file-selector.js', 'dev/image-handler.js', 'dev/pdf-handler.js', 'dev/data-uris.js', 'dev/decorator.js', 'dev/events-handler.js', 'dev/share-drawings.js', 'dev/webrtc-handler.js', 'dev/canvas-designer-widget.js', 'dev/tail.js' ], dest: 'widget.js', }, }, uglify: { options: { mangle: false, banner: banner }, my_target: { files: { 'widget.min.js': ['widget.js'] } } }, jsbeautifier: { files: ['widget.js', 'dev/*.js'], options: { js: { braceStyle: "collapse", breakChainedMethods: false, e4x: false, evalCode: false, indentChar: " ", indentLevel: 0, indentSize: 4, indentWithTabs: false, jslintHappy: false, keepArrayIndentation: false, keepFunctionIndentation: false, maxPreserveNewlines: 10, preserveNewlines: true, spaceBeforeConditional: true, spaceInParen: false, unescapeStrings: false, wrapLineLength: 0 }, html: { braceStyle: "collapse", indentChar: " ", indentScripts: "keep", indentSize: 4, maxPreserveNewlines: 10, preserveNewlines: true, unformatted: ["a", "sub", "sup", "b", "i", "u"], wrapLineLength: 0 }, css: { indentChar: " ", indentSize: 4 } } }, bump: { options: { files: ['package.json', 'bower.json'], updateConfigs: [], commit: true, commitMessage: 'v%VERSION%', commitFiles: ['package.json', 'bower.json'], createTag: true, tagName: '%VERSION%', tagMessage: '%VERSION%', push: false, pushTo: 'upstream', gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d' } }, watch: { scripts: { files: ['dev/*.js'], tasks: ['concat', 'jsbeautifier', 'uglify'], options: { spawn: false, }, }, } }); // enable plugins // set default tasks to run when grunt is called without parameters // http://gruntjs.com/api/grunt.task grunt.registerTask('default', ['concat', 'jsbeautifier', 'uglify']); grunt.loadNpmTasks('grunt-contrib-watch'); };