export default function getBaseUrl(){
return getQueryStringParameterByName('useMockApi') ? "http://localhost:3001/" : '/';
}
function getQueryStringParameterByName(name, url){
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g,"\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)")
var results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g," "));
}
import webpack from 'webpack';
import webpackConfig from '../webpack.config.prod';
import chalk from 'chalk';
process.env.NODE_ENV = 'production';
console.log(chalk.blue('Generating minified bundle for production. This will take a moment'));
webpack(webpackConfig).run((err,stats)=>{
if (err){
console.log(chalk.red(err));
return 1;
}
const jsonStats = stats.toJson();
if (jsonStats.hasErrors){
return jsonStats.errors.map(error=>console.log(chalk.red(error)));
}
if (jsonStats.hasWarnings){
console.log(chalk.yellow("Webpack generated the following warnings: "));
jsonStats.warnings.map(warning => console.log(chalk.yellow(warning)));
}
console.log(`Webpack stats: ${stats}`);
console.log(chalk.green('Your app has been built for production and written to dist!'));
return 0;
});
import path from 'path';
import webpack from 'webpack';
import HtmlWebpackPlugin from 'html-webpack-plugin';
export default {
debug: true,
devtool: 'source-map',
noInfo: false,
entry: [
path.resolve(__dirname, 'src/index')
],
target: 'web',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js'
},
plugins: [
new HtmlWebpackPlugin({
template:'src/index.html',
minify:{
removeComments:true,
collapseWhitespace:true,
removeRedundantAttributes:true,
useShortDoctype:true,
removeEmptyAttributes:true,
removeStyleLinkTypeAttributes:true,
keepClosingSlash:true,
minifyJS:true,
minifyCSS:true,
minifyURLs:true
},
inject:true
}),
//Eliminate duplicate packages when generating bundle
new webpack.optimize.DedupePlugin(),
// Minfy JS
new webpack.optimize.UglifyJsPlugin(),
],
module: {
loaders: [
{test: /\.js$/, exclude: /node_modules/, loaders: ['babel']},
{test: /\.css$/, loaders: ['style','css']}
]
}
}
import express from "express";
import path from "path";
import open from "open";
import compression from 'compression';
/* eslint-disable no-console */
var port = 3000;
var app = express();
app.use(compression());
app.use(express.static('dist'));
app.get('/', function (req, res) {
res.sendFile(path.join(__dirname, '../dist/index.html'))
});
app.get('/users', function (req, res) {
res.json([
{"id":1,"firstName":"Bob","lastName":"Smith","email":"bob@gmail.com"},
{"id":2,"firstName":"Tammy","lastName":"Norton","email":"tnorton@yahoo.com"},
{"id":3,"firstName":"Tina","lastName":"Lee","email":"lee.tina@hotmail.com"}
]);
});
app.listen(port,function(err){
if(err){
console.log(err);
} else{
open('http://localhost:'+port);
}
});