| module.exports = function(grunt) { |
| |
| var staticContentFolder = '../src/main/resources/SLING-INF/libs/sling/resource-editor/static'; |
| var jspFolder = '../src/main/resources/SLING-INF/libs/sling/resource-editor'; |
| var e2eTestSpecFolder = '../src/test/javascript/e2e/spec/**/*spec.js'; |
| var server = 'localhost'; |
| var port = '8080'; |
| |
| grunt.initConfig({ |
| env : { |
| build : { |
| PHANTOMJS_BIN: 'node_modules/karma-phantomjs-launcher/node_modules/phantomjs/lib/phantom/bin/phantomjs', |
| SLING_SERVER: (typeof process.env.SLING_SERVER === 'undefined' || process.env.SLING_SERVER === null || '' === process.env.SLING_SERVER) ? server : process.env.SLING_SERVER, |
| SLING_PORT: (typeof process.env.SLING_PORT === 'undefined' || process.env.SLING_PORT === null || '' === process.env.SLING_PORT) ? port : process.env.SLING_PORT |
| } |
| }, |
| 'node-inspector': { |
| custom: { |
| options: { |
| 'web-port': 5050, |
| 'web-host': 'localhost', |
| 'debug-port': 5857 |
| } |
| } |
| }, |
| less: { |
| compileCore: { |
| options: { |
| strictMath: true, |
| sourceMap: true, |
| outputSourceFiles: true, |
| sourceMapURL: 'bootstrap.css.map', |
| sourceMapFilename: staticContentFolder+'/generated/css/bootstrap.css.map' |
| }, |
| src: '../src/main/less/reseditor.less', |
| dest: staticContentFolder+'/generated/css/bootstrap.css' |
| } |
| }, |
| watch: { |
| less : { |
| files : '../src/main/less/**/*.less', |
| tasks : [ 'less' ], |
| }, |
| all : { |
| files : ['../src/main/less/**/*.less', |
| '../src/test/javascript/**/*spec.js', |
| staticContentFolder+'/js/**/*.js', |
| jspFolder+'/*.*' |
| ], |
| tasks : [ 'desktop_build' ], |
| }, |
| e2e : { |
| files : ['../src/main/less/**/*.less', |
| '../src/test/javascript/**/*spec.js', |
| staticContentFolder+'/js/**/*.js', |
| jspFolder+'/*.*' |
| ], |
| tasks : ['env:build', 'webdriver:chrome', 'webdriver:firefox'] |
| }, |
| karma : { |
| files:[ |
| staticContentFolder+'/generated/3rd_party/js/**/*.js', |
| staticContentFolder+'/js/**/*.js', |
| '../src/test/javascript/spec/*spec.js' |
| ], |
| tasks: ['karma:desktop_build'] |
| |
| } |
| }, |
| _comment:'The google web fonts could be downloaded and copied via grunt-goog-webfont-dl. But goog-webfont-dl directly points to the global #!/usr/bin/env node and not to the local one.', |
| copy: { |
| js_dependencies: { |
| files: [ |
| { |
| expand: true, // Enable dynamic expansion. |
| cwd: 'node_modules/', // Src matches are relative to this path. |
| src: [ |
| 'bootstrap/dist/js/bootstrap.min.js', |
| 'select2/select2.min.js', |
| 'jquery/dist/jquery.min.js', |
| 'jquery/dist/jquery.min.map', |
| 'bootbox/bootbox.min.js', |
| 'jstree/dist/jstree.min.js', |
| 'bootstrap-notify/dist/bootstrap-notify.min.js' |
| ], // Actual pattern(s) to match. |
| dest: staticContentFolder+'/generated/3rd_party/js', // Destination path prefix. |
| flatten: true |
| }, |
| ], |
| }, |
| css_dependencies: { |
| files: [ |
| { |
| expand: true, // Enable dynamic expansion. |
| cwd: 'node_modules/', // Src matches are relative to this path. |
| src: [ |
| 'select2/select2.css', |
| 'select2/select2.png', |
| 'select2/select2-spinner.gif', |
| 'animate.css/animate.min.css', |
| 'jstree/dist/themes/default/style.min.css', |
| 'jstree/dist/themes/default/32px.png', |
| 'jstree/dist/themes/default/40px.png', |
| 'jstree/dist/themes/default/throbber.gif', |
| ], // Actual pattern(s) to match. |
| dest: staticContentFolder+'/generated/3rd_party/css', // Destination path prefix. |
| flatten: true |
| }, |
| ], |
| }, |
| font_dependencies: { |
| files: [ |
| { |
| expand: true, // Enable dynamic expansion. |
| cwd: 'node_modules/', // Src matches are relative to this path. |
| src: [ |
| 'bootstrap/fonts/glyphicons-halflings-regular.ttf', |
| 'bootstrap/fonts/glyphicons-halflings-regular.woff2', |
| 'bootstrap/fonts/glyphicons-halflings-regular.woff' |
| ], // Actual pattern(s) to match. |
| dest: staticContentFolder+'/generated/3rd_party/fonts', // Destination path prefix. |
| flatten: true |
| }, |
| ], |
| } |
| }, |
| karma: { |
| options: { |
| configFile: 'karma.conf.ci.js', |
| }, |
| desktop_build: { |
| singleRun: true, |
| browsers: ['Chrome', 'Firefox'] |
| }, |
| multi_run: { |
| singleRun: false, |
| browsers: ['Chrome', 'Firefox'] |
| }, |
| build: { |
| singleRun: true, |
| browsers: ['PhantomJS'] |
| } |
| }, |
| webdriver: { |
| options: { |
| }, |
| chrome: { |
| options: { |
| configFile: 'wdio.conf.js', |
| specs: [e2eTestSpecFolder], |
| // overwrite default settings |
| desiredCapabilities: { |
| browserName: 'chrome' |
| } |
| } |
| }, |
| firefox: { |
| options: { |
| configFile: 'wdio.conf.js', |
| specs: [e2eTestSpecFolder], |
| // overwrite default settings |
| desiredCapabilities: { |
| browserName: 'firefox' |
| }, |
| debug: true |
| }, |
| } |
| } |
| }) |
| |
| // These plugins provide necessary tasks. |
| require('load-grunt-tasks')(grunt, { scope: 'devDependencies' }); |
| |
| grunt.registerTask('setup', ['env:build']); |
| // grunt.registerTask('build', ['setup', 'less', 'copy', 'karma:build']); |
| grunt.registerTask('build', ['setup', 'less', 'copy']); |
| |
| grunt.registerTask('default', ['build']); |
| |
| |
| grunt.registerTask('desktop_build', ['setup', 'less', 'copy', 'karma:desktop_build'/* doesn't seem to work right now, 'webdriver:chrome', 'webdriver:firefox'*/]); |
| }; |