aboutsummaryrefslogblamecommitdiffstats
path: root/packages/testnet-faucets/gulpfile.js
blob: 839ef851b42f9a5893d697fa557fb020a81cbfc7 (plain) (tree)
1
2
3
4
5
6
7
8
9




                                   
                                                        


                   
                                                       
             
                                              



                              
                                                                   
























                                                                                
                              
                                                               
       
                   
                                                  


















                                                     
                                                      








                                  













                                                                                  
 
const gulp = require('gulp');
const nodemon = require('nodemon');
const path = require('path');
const webpack = require('webpack');
const fs = require('fs');
const nodeExternals = require('webpack-node-externals');

const config = {
    target: 'node',
    entry: [path.join(__dirname, '/src/ts/server.ts')],
    output: {
        path: path.join(__dirname, '/server'),
        filename: 'server.js',
    },
    devtool: 'source-map',
    resolve: {
        modules: [path.join(__dirname, '/src/ts'), 'node_modules'],
        extensions: ['.ts', '.tsx', '.js', '.jsx', '.json'],
        alias: {
            ts: path.join(__dirname, '/src/ts'),
            contract_artifacts: path.join(__dirname, '/src/contract_artifacts'),
        },
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                loader: 'source-map-loader',
            },
            {
                test: /\.tsx?$/,
                loader: 'awesome-typescript-loader',
            },
        ],
    },
    plugins: [
        new webpack.BannerPlugin({
            banner: 'require("source-map-support").install();',
            raw: true,
            entryOnly: false,
        }),
    ],
    externals: nodeExternals({
        modulesDir: path.join(__dirname, '../../node_modules'),
    }),
    watchOptions: {
        ignored: /server|node_modules|transpiled/,
    },
};

gulp.task('build', function(done) {
    webpack(config).run(onBuild(done));
});

gulp.task('watch', function() {
    webpack(config).watch(100, function(err, stats) {
        onBuild()(err, stats);
        nodemon.restart();
    });
});

gulp.task('run', ['watch'], function() {
    nodemon({
        execMap: {
            js: 'node',
        },
        script: path.join(__dirname, 'server/server'),
        ignore: ['*'],
        watch: ['foo/'],
        ext: 'noop',
    }).on('restart', function() {
        console.log('Restarted!');
    });
});

function onBuild(done) {
    return function(err, stats) {
        if (err) {
            console.log('Error', err);
            process.exit(1);
        } else {
            console.log(stats.toString());
        }
        if (done) {
            if (stats.compilation.errors && stats.compilation.errors.length > 0) {
                process.exit(1);
            }
            done();
        }
    };
}