module.exports = function(grunt) { require('load-grunt-tasks')(grunt); var path = require('path'); /** * Resolve external project resource as file path */ function resolvePath(project, file) { return path.join(path.dirname(require.resolve(project)), file); } // project configuration grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), config: { sources: 'app', dist: 'dist' }, jshint: { src: [ ['<%=config.sources %>'] ], options: { jshintrc: true } }, browserify: { options: { browserifyOptions: { // make sure we do not include browser shims unnecessarily builtins: false, insertGlobalVars: { process: function () { return 'undefined'; }, Buffer: function () { return 'undefined'; } } }, transform: [ 'brfs' ] }, watch: { options: { watch: true }, files: { '<%= config.dist %>/index.js': [ '<%= config.sources %>/**/*.js' ] } }, app: { files: { '<%= config.dist %>/index.js': [ '<%= config.sources %>/**/*.js' ] } } }, copy: { diagram_js: { files: [ { src: resolvePath('diagram-js', 'assets/diagram-js.css'), dest: '<%= config.dist %>/css/diagram-js.css' } ] }, app: { files: [ { expand: true, cwd: '<%= config.sources %>/', src: ['**/*.*', '!**/*.js'], dest: '<%= config.dist %>' } ] } }, watch: { samples: { files: [ '<%= config.sources %>/**/*.*' ], tasks: [ 'copy:app' ] }, }, connect: { options: { port: 9013, livereload: 9014, hostname: 'localhost' }, livereload: { options: { open: true, base: [ '<%= config.dist %>' ] } } } }); // tasks grunt.registerTask('build', [ 'copy', 'browserify:app' ]); grunt.registerTask('auto-build', [ 'copy', 'browserify:watch', 'connect:livereload', 'watch' ]); grunt.registerTask('default', [ 'jshint', 'build' ]); };