| |
| /* |
| * |
| * 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', []); |
| }; |