Skip to content
Snippets Groups Projects
webpack.config.js 1.67 KiB
Newer Older
  • Learn to ignore specific revisions
  • Ray Schamp's avatar
    Ray Schamp committed
    var path = require('path');
    
    var CopyWebpackPlugin = require('copy-webpack-plugin');
    
    var HtmlWebpackPlugin = require('html-webpack-plugin');
    var webpack = require('webpack');
    
    Ray Schamp's avatar
    Ray Schamp committed
    module.exports = {
        entry: {
    
    Ray Schamp's avatar
    Ray Schamp committed
            lib: ['react', 'react-dom'],
    
    Ray Schamp's avatar
    Ray Schamp committed
            gui: './src/index.jsx'
    
    Ray Schamp's avatar
    Ray Schamp committed
        },
        output: {
    
            path: path.resolve(__dirname, 'build'),
    
    Ray Schamp's avatar
    Ray Schamp committed
            filename: '[name].js'
        },
        module: {
    
            externals: {
                React: 'react',
                ReactDOM: 'react-dom'
            },
    
    Ray Schamp's avatar
    Ray Schamp committed
            loaders: [{
    
    Ray Schamp's avatar
    Ray Schamp committed
                test: /\.jsx?$/,
    
    Ray Schamp's avatar
    Ray Schamp committed
                loader: 'babel-loader',
                include: path.resolve(__dirname, 'src'),
                query: {
    
                    plugins: ['transform-object-rest-spread'],
    
    Ray Schamp's avatar
    Ray Schamp committed
                    presets: ['es2015', 'react']
                }
    
            {
                test: /\.svg$/,
                loader: 'svg-url-loader?noquotes'
            },
    
            {
                test: /\.json$/,
                loader: 'json-loader'
    
    Ray Schamp's avatar
    Ray Schamp committed
            }]
    
        },
        plugins: [
    
            new webpack.DefinePlugin({
    
    Ray Schamp's avatar
    Ray Schamp committed
                'process.env.BASE_PATH': '"' + (process.env.BASE_PATH || '/') + '"'
    
            new webpack.optimize.CommonsChunkPlugin({
    
    Ray Schamp's avatar
    Ray Schamp committed
                name: 'lib',
                filename: 'lib.min.js'
    
            }),
            new HtmlWebpackPlugin({
                title: 'Scratch 3.0 GUI'
            }),
            new CopyWebpackPlugin([{
                from: 'node_modules/scratch-blocks/media',
                to: 'static/blocks-media'
            }])
    
    Ray Schamp's avatar
    Ray Schamp committed
        ].concat(process.env.NODE_ENV === 'production' ? [
    
            new webpack.optimize.UglifyJsPlugin({
                include: /\.min\.js$/,
                minimize: true,
                compress: {
                    warnings: false
                }
    
    Ray Schamp's avatar
    Ray Schamp committed
    };