Skip to content

Commit

Permalink
chore(heroku): deploy apps to heroku
Browse files Browse the repository at this point in the history
- enable deployment of review, staging and production apps on heroku

[FInishes #162304307]
  • Loading branch information
KvNGCzA authored and mbilesanmi committed Dec 5, 2018
1 parent e2e34ee commit 238801e
Show file tree
Hide file tree
Showing 10 changed files with 567 additions and 1,158 deletions.
18 changes: 18 additions & 0 deletions app.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "valinor-ah-frontend",
"scripts": {
},
"env": {
},
"formation": {
"web": {
"quantity": 1
}
},
"addons": [

],
"buildpacks": [

]
}
14 changes: 14 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const express = require('express');
const path = require('path');

const app = express();
const PORT = process.env.PORT || 3000;

app.use(express.static(path.join(__dirname, 'dist')));

app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'dist', 'index.html'));
});

// eslint-disable-next-line no-console
app.listen(PORT, () => console.log(`app listening on port ${PORT}`));
1,459 changes: 360 additions & 1,099 deletions package-lock.json

Large diffs are not rendered by default.

40 changes: 28 additions & 12 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,15 @@
"version": "1.0.0",
"description": "A social platform for the creative at heart",
"main": "index.js",
"engines": {
"node": "8.12.0",
"npm": "6.4.1"
},
"scripts": {
"dev": "webpack-dev-server --mode development --open",
"start": "npm run clean && npm run build && node index",
"build": "webpack --mode production",
"clean": "rm -rf dist",
"dev": "webpack-dev-server --mode development --open",
"test": "jest --config ./jest.config.json --updateSnapshot --coverage",
"coveralls": "cat ./coverage/lcov.info | coveralls && rm -rf ./coverage"
},
Expand All @@ -20,49 +26,54 @@
},
"homepage": "https://github.com/andela/valinor-ah-frontend#readme",
"devDependencies": {
"@babel/core": "^7.1.6",
"@babel/plugin-proposal-class-properties": "^7.1.0",
"@babel/preset-env": "^7.1.6",
"@babel/preset-react": "^7.0.0",
"@babel/register": "^7.0.0",
"babel-core": "^7.0.0-bridge.0",
"babel-jest": "^23.6.0",
"coveralls": "^3.0.2",
"babel-loader": "^8.0.4",
"eslint": "^5.9.0",
"eslint-config-airbnb": "^17.1.0",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-jsx-a11y": "^6.1.2",
"eslint-plugin-react": "^7.11.1",
"jest": "^23.6.0",
"regenerator-runtime": "^0.13.1",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^3.2.0",
"node-sass": "^4.10.0",
"postcss-loader": "^3.0.0",
"prop-types": "^15.6.2",
"react-test-renderer": "^16.6.3",
"sass-loader": "^7.1.0",
"uglifyjs-webpack-plugin": "^2.0.1",
"webpack": "^4.26.1",
"webpack-cli": "^3.1.2",
"react-test-renderer": "^16.6.3",
"regenerator-runtime": "^0.13.1",
"webpack-dev-server": "^3.1.10"
},
"dependencies": {
"@babel/core": "^7.1.6",
"@babel/plugin-proposal-class-properties": "^7.1.0",
"@babel/preset-env": "^7.1.6",
"@babel/preset-react": "^7.0.0",
"@babel/register": "^7.0.0",
"acorn": "^6.0.4",
"autoprefixer": "^9.3.1",
"babel-eslint": "^10.0.1",
"babel-plugin-transform-object-rest-spread": "^7.0.0-beta.3",
"babel-core": "^7.0.0-bridge.0",
"babel-loader": "^8.0.4",
"bootstrap": "^4.1.3",
"compression-webpack-plugin": "^2.0.0",
"css-loader": "^1.0.1",
"cssnano": "^4.1.7",
"enzyme": "^3.7.0",
"enzyme-adapter-react-16": "^1.7.0",
"enzyme-to-json": "^3.3.4",
"express": "^4.16.4",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^3.2.0",
"jquery": "^3.3.1",
"mini-css-extract-plugin": "^0.4.5",
"node-sass": "^4.10.0",
"optimize-css-assets-webpack-plugin": "^5.0.1",
"popper.js": "^1.14.6",
"postcss-loader": "^3.0.0",
"precss": "^4.0.0",
"prop-types": "^15.6.2",
"react": "^16.6.3",
Expand All @@ -74,6 +85,11 @@
"redux-devtools-extension": "^2.13.7",
"redux-logger": "^3.0.6",
"redux-thunk": "^2.3.0",
"style-loader": "^0.23.1"
"sass-loader": "^7.1.0",
"style-loader": "^0.23.1",
"uglifyjs-webpack-plugin": "^2.0.1",
"webpack": "^4.26.1",
"webpack-cli": "^3.1.2",
"webpack-merge": "^4.1.4"
}
}
2 changes: 1 addition & 1 deletion src/components/navigation/NavBar.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { NavLink } from 'react-router-dom';

const NavBar = () => (
<nav className="navbar navbar-expand-lg navbar-light bg-light">
<a className="navbar-brand logo" href="/">Author's Haven |</a>
<NavLink className="navbar-brand logo" to="/">Author's Haven |</NavLink>
<NavLink activeStyle={{ color: 'red' }} className="nav-item nav-link active" exact to="/">Home</NavLink>
<NavLink activeStyle={{ color: 'red' }} className="nav-item nav-link" exact to="/login">Login</NavLink>
</nav>
Expand Down
2 changes: 1 addition & 1 deletion src/index.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Author's Haven</title>
Expand Down
4 changes: 2 additions & 2 deletions src/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ const routes = [
{
path: '/login',
component: Login,
exact: false
},
exact: true
}
];

export default routes;
93 changes: 93 additions & 0 deletions webpack.common.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CompressionPlugin = require('compression-webpack-plugin');
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const cssnano = require('cssnano');
const path = require('path');

module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
publicPath: '/',
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
loader: 'babel-loader'
},
{
test: /\.png$/,
loader: 'url-loader?limit=100000'
},
{
test: /\.jpg$/,
loader: 'file-loader'
},
{
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
loader: 'file-loader'
},
{
test: /\.woff2(\?\S*)?$/,
loader: 'url-loader?limit=100000'
},
{
test: /\.woff(\?\S*)?$/,
loader: 'url-loader?limit=100000'
},
{
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
loader: 'url-loader?limit=100000&mimetype=application/octet-stream'
},
{
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
loader: 'url-loader?limit=10000&mimetype=image/svg+xml'
},
{
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
loader: 'file-loader'
},
{
test: /font-awesome\.config\.js/,
use: [
{ loader: 'style-loader' },
{ loader: 'font-awesome-loader' }
]
},
{
test: /bootstrap\/dist\/js\/umd\//, use: 'imports-loader?jQuery=jquery'
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html',
filename: './index.html',
inject: 'body'
}),
new CompressionPlugin(),
new OptimizeCssAssetsPlugin({
assetNameRegExp: /\.optimize\.css$/g,
cssProcessor: cssnano,
cssProcessorPluginOptions: {
preset: ['default', { discardComments: { removeAll: true } }],
},
canPrint: true
})
],
resolve: {
extensions: ['.js', '.jsx', '.css', '.scss']
},
optimization: {
minimizer: [
new UglifyJsPlugin({
sourceMap: true,
exclude: /\/node_modules/
})
]
}
};
54 changes: 11 additions & 43 deletions webpack.config.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,15 @@
const HtmlWebpackPlugin = require('html-webpack-plugin');
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const precss = require('precss');
const autoprefixer = require('autoprefixer');
const cssnano = require('cssnano');
const path = require('path');
const merge = require('webpack-merge');
const webpack = require('webpack');
const common = require('./webpack.common.js');

module.exports = {
module.exports = merge(common, {
devtool: 'source-map',
mode: 'development',
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
loader: 'babel-loader'
},
{
test: /\.(s*)css$/,
use: [
Expand All @@ -39,43 +34,16 @@ module.exports = {
loader: 'sass-loader'
}
]
},
{
test: /\.png$/,
loader: 'url-loader?limit=100000'
},
{
test: /\.jpg$/,
loader: 'file-loader'
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html',
filename: './index.html'
}),
new OptimizeCssAssetsPlugin({
assetNameRegExp: /\.optimize\.css$/g,
cssProcessor: cssnano,
cssProcessorPluginOptions: {
preset: ['default', { discardComments: { removeAll: true } }],
},
canPrint: true
})
new webpack.HotModuleReplacementPlugin()
],
optimization: {
minimizer: [
new UglifyJsPlugin({
sourceMap: true,
exclude: /\/node_modules/
})
]
},
devServer: {
historyApiFallback: true
contentBase: path.join(__dirname, 'src', 'index.html'),
port: 8080,
historyApiFallback: true,
hot: true
},
resolve: {
extensions: ['.js', '.jsx', '.css', '.scss']
}
};
});
39 changes: 39 additions & 0 deletions webpack.prod.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
const precss = require('precss');
const autoprefixer = require('autoprefixer');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const merge = require('webpack-merge');
const common = require('./webpack.common.js');

module.exports = merge(common, {
mode: 'production',
module: {
rules: [{
test: /\.(s*)css$/,
use: [
{
loader: MiniCssExtractPlugin.loader
},
{
loader: 'style-loader'
},
{
loader: 'css-loader'
},
{
loader: 'postcss-loader',
options: {
plugins() {
return [
precss,
autoprefixer
];
}
}
},
{
loader: 'sass-loader'
}
]
}]
},
});

0 comments on commit 238801e

Please sign in to comment.