var path = require('path'); module.exports = function(grunt) { require('load-grunt-tasks')(grunt); /** * Resolve external project resource as file path */ function resolvePath(project, file) { return path.join(path.dirname(require.resolve(project)), file); } grunt.initConfig({ browserify: { options: { browserifyOptions: { debug: true }, transform: [ [ 'stringify', { extensions: [ '.bpmn' ] } ] ], plugin: [ 'esmify' ] }, watch: { options: { watch: true }, files: { 'dist/index.js': [ 'app/**/*.js' ] } }, app: { files: { 'dist/index.js': [ 'app/**/*.js' ] } } }, copy: { diagram_js: { files: [ { src: resolvePath('diagram-js', 'assets/diagram-js.css'), dest: 'dist/css/diagram-js.css' } ] }, bpmn_js: { files: [ { expand: true, cwd: resolvePath('bpmn-js', 'dist/assets'), src: ['**/*.*', '!**/*.js'], dest: 'dist/vendor' } ] }, app: { files: [ { expand: true, cwd: 'app/', src: ['**/*.*', '!**/*.js'], dest: 'dist' } ] } }, less: { options: { dumpLineNumbers: 'comments', paths: [ 'node_modules' ] }, styles: { files: { 'dist/css/app.css': 'styles/app.less' } } }, watch: { options: { livereload: true }, samples: { files: [ 'app/**/*.*' ], tasks: [ 'copy:app' ] }, less: { files: [ 'styles/**/*.less', 'node_modules/bpmn-js-properties-panel/styles/**/*.less' ], tasks: [ 'less' ] }, }, connect: { livereload: { options: { port: 9013, livereload: true, hostname: 'localhost', open: true, base: [ 'dist' ] } } } }); // tasks grunt.registerTask('build', [ 'copy', 'less', 'browserify:app' ]); grunt.registerTask('auto-build', [ 'copy', 'less', 'browserify:watch', 'connect:livereload', 'watch' ]); grunt.registerTask('default', [ 'build' ]); };