Simon Egersand
2017-02-05 6f922eca4ecc5fedec9773f3371a0b086b9badc0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
var gulp = require('gulp'),
    insert = require('gulp-insert'),
    uglify = require('gulp-uglify'),
    webpack = require('gulp-webpack')
;
 
var packageName = 'react-datetime';
var pack = require( './package.json' );
 
var getWPConfig = function( filename ) {
    return {
        externals: {
            react: 'React',
            'react-dom': 'ReactDOM',
            moment: 'moment'
        },
        output: {
            libraryTarget: 'umd',
            library: 'Datetime',
            filename: filename + '.js'
        }
    };
};
 
var cr = ( '/*\n%%name%% v%%version%%\n%%homepage%%\n%%license%%: https://github.com/arqex/' + packageName + '/raw/master/LICENSE\n*/\n' )
    .replace( '%%name%%', pack.name)
    .replace( '%%version%%', pack.version)
    .replace( '%%license%%', pack.license)
    .replace( '%%homepage%%', pack.homepage)
;
 
var handleError = function( err ) {
    console.error( 'Error:', err );
};
 
function wp( config, minify ) {
    var stream =  gulp.src( './Datetime.js' )
        .pipe( webpack( config ) )
    ;
 
    if( minify ) {
        stream = stream.pipe( uglify() ).on( 'error', handleError );
    }
 
    return stream.pipe( insert.prepend( cr ) )
        .pipe( gulp.dest( 'dist/' ) )
    ;
}
 
gulp.task( 'build', function( callback ) {
    var config = getWPConfig( 'react-datetime' );
    config.devtool = '#eval';
    wp( config );
 
    config = getWPConfig( 'react-datetime.min' );
    return wp( config, true );
});
 
gulp.task( 'default', ['build'] );