X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=skyquake%2Fplugins%2Fcomposer%2FGruntfile.js;fp=skyquake%2Fplugins%2Fcomposer%2FGruntfile.js;h=a5a17366e93ceabaf44cef066a0b4816a296de4a;hb=e29efc315df33d546237e270470916e26df391d6;hp=0000000000000000000000000000000000000000;hpb=9c5e457509ba5a1822c316635c6308874e61b4b9;p=osm%2FUI.git diff --git a/skyquake/plugins/composer/Gruntfile.js b/skyquake/plugins/composer/Gruntfile.js new file mode 100644 index 000000000..a5a17366e --- /dev/null +++ b/skyquake/plugins/composer/Gruntfile.js @@ -0,0 +1,169 @@ + +/* + * + * Copyright 2016 RIFT.IO Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +'use strict'; + +var mountFolder = function (connect, dir) { + return connect.static(require('path').resolve(dir)); +}; + +var webpackDistConfig = require('./webpack.dist.config.js'), + webpackDevConfig = require('./webpack.config.js'); + +module.exports = function (grunt) { + // Let *load-grunt-tasks* require everything + require('load-grunt-tasks')(grunt); + + // Read configuration from package.json + var pkgConfig = grunt.file.readJSON('package.json'); + + grunt.initConfig({ + pkg: pkgConfig, + + version: { + project: { + src: ['package.json'] + }, + src: { + options: { + prefix: 'semver ' + }, + src: ['src/**/*.js'] + } + }, + + webpack: { + options: webpackDistConfig, + dist: { + cache: false + } + }, + + 'webpack-dev-server': { + options: { + hot: true, + port: 9000, + webpack: webpackDevConfig, + publicPath: '/assets/', + contentBase: './<%= pkg.src %>/' + }, + + start: { + keepAlive: true + } + }, + + connect: { + options: { + port: 9000 + }, + + dist: { + options: { + keepalive: true, + middleware: function (connect) { + return [ + mountFolder(connect, pkgConfig.dist) + ]; + } + } + } + }, + + open: { + options: { + delay: 500 + }, + dev: { + path: 'http://localhost:<%= connect.options.port %>/webpack-dev-server/' + }, + dist: { + path: 'http://localhost:<%= connect.options.port %>/' + } + }, + + karma: { + unit: { + configFile: 'karma.conf.js' + } + }, + + copy: { + dist: { + files: [ + // includes files within path + { + flatten: true, + expand: true, + src: ['<%= pkg.src %>/*'], + dest: '<%= pkg.dist %>/', + filter: 'isFile' + }, + { + flatten: true, + expand: true, + src: ['<%= pkg.src %>/images/*'], + dest: '<%= pkg.dist %>/images/' + }, + { + flatten: true, + expand: true, + src: ['<%= pkg.src %>/images/logos/*'], + dest: '<%= pkg.dist %>/images/logos/' + }, + { + flatten: true, + expand: true, + src: ['<%= pkg.src %>/assets/*'], + dest: '<%= pkg.dist %>/assets/' + } + ] + } + }, + + clean: { + dist: { + files: [{ + dot: true, + src: [ + '<%= pkg.dist %>' + ] + }] + } + } + }); + + grunt.registerTask('serve', function (target) { + if (target === 'dist') { + return grunt.task.run(['build', 'open:dist', 'connect:dist']); + } + + grunt.task.run([ + 'open:dev', + 'webpack-dev-server' + ]); + }); + + grunt.registerTask('patch', ['version:project:patch', 'version:src', 'build:dist']); + + grunt.registerTask('test', ['karma']); + + grunt.registerTask('build', ['clean', 'copy', 'webpack']); + + grunt.registerTask('default', []); +};