const path = require('path'); const APP_DIR = path.resolve(__dirname, './'); // input const BUILD_DIR = path.resolve(__dirname, './javascripts/dist'); // output const config = { entry: { 'css-theme': APP_DIR + '/javascripts/css-theme.js', dashboard: APP_DIR + '/javascripts/dashboard/Dashboard.jsx', explore: APP_DIR + '/javascripts/explore/explore.jsx', welcome: APP_DIR + '/javascripts/welcome.js', sql: APP_DIR + '/javascripts/sql.js', standalone: APP_DIR + '/javascripts/standalone.js', common: APP_DIR + '/javascripts/common.js' }, output: { path: BUILD_DIR, filename: '[name].entry.js' }, resolve: { extensions: ['', '.js', '.jsx'], alias: { webworkify: 'webworkify-webpack' } }, module: { loaders: [ { test: /\.jsx?$/, exclude: APP_DIR + '/node_modules', loader: 'babel', query: { presets: ['airbnb', 'es2015', 'react'] } }, /* for react-map-gl overlays */ { test: /\.react\.js$/, include: APP_DIR + '/node_modules/react-map-gl/src/overlays', loader: 'babel' }, /* for require('*.css') */ { test: /\.css$/, include: APP_DIR, loader: "style-loader!css-loader" }, /* for css linking images */ { test: /\.png$/, loader: "url-loader?limit=100000" }, { test: /\.jpg$/, loader: "file-loader" }, { test: /\.gif$/, loader: "file-loader" }, /* for font-awesome */ { test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url-loader?limit=10000&minetype=application/font-woff" }, { test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "file-loader" }, /* for require('*.less') */ { test: /\.less$/, include: APP_DIR, loader: "style!css!less" }, /* for mapbox */ { test: /\.json$/, loader: 'json-loader' }, { test: /\.js$/, include: APP_DIR + '/node_modules/mapbox-gl/js/render/painter/use_program.js', loader: 'transform/cacheable?brfs' } ], postLoaders: [{ include: /node_modules\/mapbox-gl/, loader: 'transform', query: 'brfs' }] }, externals: { cheerio: 'window', 'react/lib/ExecutionEnvironment': true, 'react/lib/ReactContext': true }, plugins: [] }; module.exports = config;