|
|
"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"]); |
|
|
}; |
|
|
|