123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- 'use strict';
- var gulp = require('gulp'),
- util = require('util'),
- path = require('path'),
- gutil = require('gulp-util'),
- path = require('path'),
- immutable = require('immutable'),
- merge = require('merge-stream'),
- gulpWebpack = require('gulp-webpack'),
- webpack = require('webpack'),
- sass = require('gulp-sass'),
- sourcemaps = require('gulp-sourcemaps');
- 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({
- devtool: 'source-map',
- plugins: [
- new webpack.DefinePlugin({
- 'process.env': { NODE_ENV: '"production"' }
- }),
- new webpack.optimize.UglifyJsPlugin({
- sourceMap: true,
- 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);
- return prod;
- };
- 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'));
- };
- gulp.task('js', function() {
- compileJS(false);
- });
- gulp.task('css', function() {
- compileCSS();
- });
- gulp.task('watch', function() {
- compileJS(true);
- gulp.watch('./scss/**/*.scss', compileCSS);
- });
- gulp.task('watch-js', function() {
- compileJS(true);
- });
- gulp.task('watch-css', function() {
- compileCSS();
- gulp.watch('./scss/**/*.scss', compileCSS);
- });
- gulp.task('all', ['css', 'js']);
- gulp.task('default', ['all']);
|