Files
Grav-Admin-Plugin/themes/grav/gulpfile.js

110 lines
3.2 KiB
JavaScript
Raw Normal View History

2016-02-01 11:27:34 -08:00
'use strict';
var gulp = require('gulp'),
2016-03-08 14:06:02 -08:00
util = require('util'),
path = require('path'),
gutil = require('gulp-util'),
2016-02-01 11:27:34 -08:00
path = require('path'),
immutable = require('immutable'),
merge = require('merge-stream'),
gulpWebpack = require('gulp-webpack'),
2016-03-08 14:06:02 -08:00
webpack = require('webpack'),
sass = require('gulp-sass'),
sourcemaps = require('gulp-sourcemaps');
2016-02-01 11:27:34 -08:00
var plugins = {
'Promise': 'imports?this=>global!exports?global.Promise!babel-polyfill',
'fetch': 'imports?this=>global!exports?global.fetch!whatwg-fetch'
},
base = immutable.fromJS(require('./webpack.conf.js')),
options = {
dev: base.mergeDeep({
devtool: 'source-map',
plugins: [
new webpack.DefinePlugin({
'process.env': { NODE_ENV: '"development"' }
}),
new webpack.ProvidePlugin(plugins),
new webpack.optimize.CommonsChunkPlugin("vendor", "vendor.js", Infinity)
],
output: {
filename: 'admin.js'
}
}),
prod: base.mergeDeep({
2016-02-05 12:37:59 -08:00
devtool: 'source-map',
2016-02-01 11:27:34 -08:00
plugins: [
new webpack.DefinePlugin({
'process.env': { NODE_ENV: '"production"' }
}),
new webpack.optimize.UglifyJsPlugin({
2016-02-05 12:37:59 -08:00
sourceMap: true,
2016-02-01 11:27:34 -08:00
compress: {
warnings: false
}
}),
new webpack.ProvidePlugin(plugins),
new webpack.optimize.CommonsChunkPlugin("vendor", "vendor.min.js", Infinity)
],
output: {
filename: 'admin.min.js'
}
})
};
var compileJS = function(watch) {
var devOpts = options.dev.set('watch', watch),
prodOpts = options.prod.set('watch', watch);
var prod = gulp.src('app/main.js')
.pipe(gulpWebpack(prodOpts.toJS()))
.pipe(gulp.dest('js/'));
var dev = gulp.src('app/main.js')
.pipe(gulpWebpack(devOpts.toJS()))
.pipe(gulp.dest('js/'));
return merge(prod, dev);
};
2016-03-08 14:06:02 -08:00
var compileCSS = function(event) {
return gulp.src('./scss/**/*.scss')
.on('end', function() {
// console.log(util.inspect(event));
if (event && event.path) {
gutil.log(gutil.colors.green('√'), 'Saved change for "' + event.path.replace(__dirname, '') + '"');
}
})
.on('error', gutil.log)
.pipe(sourcemaps.init())
.pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('./css-compiled'));
};
2016-02-01 11:27:34 -08:00
gulp.task('js', function() {
compileJS(false);
});
2016-03-08 14:06:02 -08:00
gulp.task('css', function() {
compileCSS();
});
2016-02-01 11:27:34 -08:00
gulp.task('watch', function() {
compileJS(true);
2016-03-08 14:06:02 -08:00
gulp.watch('./scss/**/*.scss', compileCSS);
});
gulp.task('watch-js', function() {
compileJS(true);
});
gulp.task('watch-css', function() {
compileCSS();
2016-03-08 14:06:02 -08:00
gulp.watch('./scss/**/*.scss', compileCSS);
2016-02-01 11:27:34 -08:00
});
gulp.task('all', ['css', 'js']);
2016-03-08 14:06:02 -08:00
gulp.task('default', ['all']);