| "use strict"; |
|
|
| module.exports = function (grunt) { |
|
|
| require("load-grunt-tasks")(grunt); |
| var webpack = require("webpack"); |
| var webpackConfig = require("./webpack.config.js"); |
|
|
| var deployPath = "deploy/"; |
|
|
| |
| grunt.initConfig({ |
| pkg: grunt.file.readJSON("package.json"), |
| bump: { |
| options: { |
| files: ["package.json"], |
| updateConfigs: ["pkg"], |
| commit: true, |
| commitMessage: "Bump version to %VERSION%", |
| commitFiles: ["package.json"], |
| createTag: false, |
| prereleaseName: "RC", |
| push: false |
| } |
| }, |
| clean: { |
| deploy: deployPath, |
| zip: "webvowl-*.zip", |
| testOntology: deployPath + "data/benchmark.json" |
| }, |
| compress: { |
| deploy: { |
| options: { |
| archive: function() { |
| var branchInfo = grunt.config("gitinfo.local.branch.current"); |
| return "webvowl-" + branchInfo.name + "-" + branchInfo.shortSHA + ".zip"; |
| }, |
| level: 9, |
| pretty: true |
| }, |
| files: [ |
| {expand: true, cwd: "deploy/", src: ["**"], dest: "webvowl/"} |
| ] |
| } |
| }, |
| connect: { |
| devserver: { |
| options: { |
| protocol: "http", |
| hostname: "localhost", |
| port: 8000, |
| base: deployPath, |
| directory: deployPath, |
| livereload: true, |
| open: "http://localhost:8000/", |
| middleware: function (connect, options, middlewares) { |
| return middlewares.concat([ |
| require("serve-favicon")("deploy/favicon.ico"), |
| require("serve-static")(options.base[0]) |
| ]); |
| } |
| } |
| } |
| }, |
| copy: { |
| dependencies: { |
| files: [ |
| {expand: true, cwd: "node_modules/d3/", src: ["d3.min.js"], dest: deployPath + "/js/"} |
| ] |
| }, |
| static: { |
| files: [ |
| {expand: true, cwd: "src/", src: ["favicon.ico"], dest: deployPath}, |
| {expand: true, src: ["license.txt"], dest: deployPath} |
| ] |
| } |
| }, |
| htmlbuild: { |
| options: { |
| beautify: true, |
| relative: true, |
| data: { |
| |
| version: "<%= pkg.version %>" |
| } |
| }, |
| dev: { |
| src: "src/index.html", |
| dest: deployPath |
| }, |
| release: { |
| |
| src: "src/index.html", |
| dest: deployPath |
| } |
| }, |
| jshint: { |
| options: { |
| jshintrc: true |
| }, |
| source: ["src/**/*.js"], |
| tests: ["test/*/**/*.js"] |
| }, |
| karma: { |
| options: { |
| configFile: "test/karma.conf.js" |
| }, |
| dev: {}, |
| continuous: { |
| singleRun: true |
| } |
| }, |
| replace: { |
| options: { |
| patterns: [ |
| { |
| match: "WEBVOWL_VERSION", |
| replacement: "<%= pkg.version %>" |
| } |
| ] |
| }, |
| dist: { |
| files: [ |
| {expand: true, cwd: "deploy/js/", src: "webvowl*.js", dest: "deploy/js/"} |
| ] |
| } |
| }, |
| webpack: { |
| options: webpackConfig, |
| build: { |
| plugins: webpackConfig.plugins.concat( |
| |
| |
| new webpack.optimize.DedupePlugin() |
|
|
| ) |
| }, |
| "build-dev": { |
| devtool: "sourcemap", |
| debug: true |
| } |
| }, |
| watch: { |
| configs: { |
| files: ["Gruntfile.js"], |
| options: { |
| reload: true |
| } |
| }, |
| js: { |
| files: ["src/app/**/*", "src/webvowl/**/*"], |
| tasks: ["webpack:build-dev", "post-js"], |
| options: { |
| livereload: true, |
| spawn: false |
| } |
| }, |
| html: { |
| files: ["src/**/*.html"], |
| tasks: ["htmlbuild:dev"], |
| options: { |
| livereload: true, |
| spawn: false |
| } |
| } |
| } |
| }); |
|
|
|
|
| grunt.registerTask("default", ["release"]); |
| grunt.registerTask("pre-js", ["clean:deploy", "clean:zip", "copy"]); |
| grunt.registerTask("post-js", ["replace"]); |
| grunt.registerTask("package", ["pre-js", "webpack:build-dev", "post-js", "htmlbuild:dev"]); |
| grunt.registerTask("release", ["pre-js", "webpack:build", "post-js", "htmlbuild:release", "clean:testOntology"]); |
| grunt.registerTask("zip", ["gitinfo", "release", "compress"]); |
| grunt.registerTask("webserver", ["package", "connect:devserver", "watch"]); |
| grunt.registerTask("test", ["karma:dev"]); |
| grunt.registerTask("test-ci", ["karma:continuous"]); |
| }; |
|
|