Rift.IO OSM R1 Initial Submission
[osm/UI.git] / skyquake / plugins / composer / Gruntfile.js
1
2 /*
3 *
4 * Copyright 2016 RIFT.IO Inc
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *
18 */
19 'use strict';
20
21 var mountFolder = function (connect, dir) {
22 return connect.static(require('path').resolve(dir));
23 };
24
25 var webpackDistConfig = require('./webpack.dist.config.js'),
26 webpackDevConfig = require('./webpack.config.js');
27
28 module.exports = function (grunt) {
29 // Let *load-grunt-tasks* require everything
30 require('load-grunt-tasks')(grunt);
31
32 // Read configuration from package.json
33 var pkgConfig = grunt.file.readJSON('package.json');
34
35 grunt.initConfig({
36 pkg: pkgConfig,
37
38 version: {
39 project: {
40 src: ['package.json']
41 },
42 src: {
43 options: {
44 prefix: 'semver '
45 },
46 src: ['src/**/*.js']
47 }
48 },
49
50 webpack: {
51 options: webpackDistConfig,
52 dist: {
53 cache: false
54 }
55 },
56
57 'webpack-dev-server': {
58 options: {
59 hot: true,
60 port: 9000,
61 webpack: webpackDevConfig,
62 publicPath: '/assets/',
63 contentBase: './<%= pkg.src %>/'
64 },
65
66 start: {
67 keepAlive: true
68 }
69 },
70
71 connect: {
72 options: {
73 port: 9000
74 },
75
76 dist: {
77 options: {
78 keepalive: true,
79 middleware: function (connect) {
80 return [
81 mountFolder(connect, pkgConfig.dist)
82 ];
83 }
84 }
85 }
86 },
87
88 open: {
89 options: {
90 delay: 500
91 },
92 dev: {
93 path: 'http://localhost:<%= connect.options.port %>/webpack-dev-server/'
94 },
95 dist: {
96 path: 'http://localhost:<%= connect.options.port %>/'
97 }
98 },
99
100 karma: {
101 unit: {
102 configFile: 'karma.conf.js'
103 }
104 },
105
106 copy: {
107 dist: {
108 files: [
109 // includes files within path
110 {
111 flatten: true,
112 expand: true,
113 src: ['<%= pkg.src %>/*'],
114 dest: '<%= pkg.dist %>/',
115 filter: 'isFile'
116 },
117 {
118 flatten: true,
119 expand: true,
120 src: ['<%= pkg.src %>/images/*'],
121 dest: '<%= pkg.dist %>/images/'
122 },
123 {
124 flatten: true,
125 expand: true,
126 src: ['<%= pkg.src %>/images/logos/*'],
127 dest: '<%= pkg.dist %>/images/logos/'
128 },
129 {
130 flatten: true,
131 expand: true,
132 src: ['<%= pkg.src %>/assets/*'],
133 dest: '<%= pkg.dist %>/assets/'
134 }
135 ]
136 }
137 },
138
139 clean: {
140 dist: {
141 files: [{
142 dot: true,
143 src: [
144 '<%= pkg.dist %>'
145 ]
146 }]
147 }
148 }
149 });
150
151 grunt.registerTask('serve', function (target) {
152 if (target === 'dist') {
153 return grunt.task.run(['build', 'open:dist', 'connect:dist']);
154 }
155
156 grunt.task.run([
157 'open:dev',
158 'webpack-dev-server'
159 ]);
160 });
161
162 grunt.registerTask('patch', ['version:project:patch', 'version:src', 'build:dist']);
163
164 grunt.registerTask('test', ['karma']);
165
166 grunt.registerTask('build', ['clean', 'copy', 'webpack']);
167
168 grunt.registerTask('default', []);
169 };