99 lines
3.0 KiB
JavaScript
99 lines
3.0 KiB
JavaScript
var htmlreplace = require('gulp-html-replace');
|
|
var gulp = require("gulp");
|
|
var gutil = require("gulp-util");
|
|
var karma = require("karma");
|
|
var minimist = require('minimist');
|
|
var path = require('path');
|
|
var rev = require('gulp-rev');
|
|
var shell = require('gulp-shell');
|
|
var sprintf = require('sprintf');
|
|
var webpack = require("webpack");
|
|
var webpackConfig = require("./webpack.config.js");
|
|
var WebpackDevServer = require("webpack-dev-server");
|
|
|
|
var knownOptions = {
|
|
string: 'env',
|
|
string: 'region',
|
|
string: 'bucket',
|
|
string: 'cloudfront',
|
|
string: 'colors',
|
|
default: { bucket: null, cloudfront: null, colors: true, env: null, region: null }
|
|
};
|
|
var options = minimist(process.argv.slice(2), knownOptions);
|
|
if(options.env && options.env !== 'production' && options.env !== 'development') {
|
|
throw new Error('Unknown environment config: ' + options.env);
|
|
}
|
|
|
|
if(options.colors === true || options.colors == 'true' || options.colors == 'yes') {
|
|
options.colors = true;
|
|
} else {
|
|
options.colors = false;
|
|
}
|
|
|
|
gulp.task('build', ['clean', 'build:webpack']);
|
|
gulp.task('clean', shell.task(['rm -rf build']));
|
|
gulp.task('default', ['webpack-dev-server']);
|
|
gulp.task('publish', ['clean', 'build', 'publish:assets', 'publish:assets:index', 'publish:index']);
|
|
|
|
gulp.task("build:webpack", ['clean'], function(callback) {
|
|
var config = Object.create(webpackConfig);
|
|
var SaveAssetsJson = require('assets-webpack-plugin');
|
|
|
|
config.output = {
|
|
filename : "bundle.js",
|
|
path : path.join(__dirname, 'build'),
|
|
publicPath: "./"
|
|
};
|
|
|
|
config.plugins = (config.plugins || []).concat(
|
|
new webpack.DefinePlugin({
|
|
"process.env": {
|
|
"NODE_ENV": JSON.stringify(options.env)
|
|
}
|
|
}),
|
|
new webpack.optimize.DedupePlugin(),
|
|
new webpack.optimize.UglifyJsPlugin(),
|
|
new SaveAssetsJson()
|
|
);
|
|
|
|
webpack(config, function(err, stats) {
|
|
if(err) throw new gutil.PluginError("webpack:build", err);
|
|
gutil.log("[webpack:build]", stats.toString({
|
|
colors: options.colors
|
|
}));
|
|
callback();
|
|
});
|
|
});
|
|
|
|
gulp.task("webpack-dev-server", function(callback) {
|
|
var host = process.env.HOST || "localhost";
|
|
var port = parseInt(process.env.PORT, 10) || 8081;
|
|
var config = Object.create(webpackConfig);
|
|
config.devtool = "eval";
|
|
config.debug = true;
|
|
|
|
new WebpackDevServer(webpack(config), {
|
|
stats: {
|
|
colors: true
|
|
}
|
|
}).listen(port, host, function(err) {
|
|
if(err) throw new gutil.PluginError("webpack-dev-server", err);
|
|
gutil.log("[webpack-dev-server]", sprintf("http://%s:%d/webpack-dev-server/index.html", host, port));
|
|
});
|
|
});
|
|
|
|
gulp.task("test", function(done) {
|
|
var server = new karma.Server({
|
|
configFile: __dirname + "/karma.conf.js",
|
|
singleRun: true,
|
|
}, done);
|
|
server.start();
|
|
});
|
|
|
|
gulp.task("tdd", function(done) {
|
|
var server = new karma.Server({
|
|
configFile: __dirname + "/karma.conf.js",
|
|
}, done);
|
|
server.start();
|
|
});
|