Skip to content

Instantly share code, notes, and snippets.

View teimurjan's full-sized avatar
:electron:

Teimur Gasanov teimurjan

:electron:
View GitHub Profile
@teimurjan
teimurjan / home.js
Created May 21, 2018 06:29
blog-react-applications-optimization
// home.js
import React from "react";
export default () => (
<div className="wrapper">
<h2>Home</h2>
</div>
);
@teimurjan
teimurjan / chunks-webpack.js
Created May 21, 2018 06:28
blog-react-applications-optimization
const webpack = require("webpack");
const path = require("path");
const buildPath = path.resolve("build");
module.exports = {
output: {
path: buildPath,
filename: "[name].[chunkhash:8].js",
chunkFilename: "[name].[chunkhash:8].chunk.js"
@teimurjan
teimurjan / vendor-client.js
Created May 21, 2018 06:27
blog-react-applications-optimization
const webpack = require("webpack");
module.exports = {
entry: {
client: "./src/index.js",
vendor: ["react", "react-dom", "react-router", "react-router-dom"]
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: "vendor",
@teimurjan
teimurjan / webpack-bundle-analyzer.js
Created May 21, 2018 06:25
blog-react-applications-optimization
const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;
module.exports = {
plugins: [new BundleAnalyzerPlugin()]
};
@teimurjan
teimurjan / uglify-js.js
Created May 21, 2018 06:24
blog-react-applications-optimization
const webpack = require("webpack");
module.exports = {
plugins: [
new webpack.optimize.UglifyJsPlugin({
/* settings */
})
]
};
@teimurjan
teimurjan / node-env.js
Created May 21, 2018 06:20
blog-react-applications-optimization
const webpack = require("webpack");
module.exports = {
plugins: [
new webpack.DefinePlugin({
"process.env": {
NODE_ENV: JSON.stringify("production")
}
})
]
@teimurjan
teimurjan / minimize-css.js
Created May 21, 2018 06:18
blog-react-applications-optimization
loader: ExtractTextPlugin.extract({
use: [
{
loader: require.resolve("css-loader"),
options: {
minimize: true
}
}
]
});
@teimurjan
teimurjan / extract-text-plugin.js
Last active May 21, 2018 06:17
blog-react-applications-optimization
const ExtractTextPlugin = require("extract-text-webpack-plugin");
module.exports = {
module: {
rules: [
{
oneOf: [
{
test: /\.css$/,
loader: ExtractTextPlugin.extract({
@teimurjan
teimurjan / api.js
Last active May 21, 2018 06:10
blog-digits-recognizer-python-flask-react-3
const validateStatusCode = response =>
new Promise((resolve, reject) => {
const status = response.status;
const next = status < 400 ? resolve : reject;
response.text().then(next);
});
export const makePrediction = image =>
fetch("/api/predict", {
method: "POST",
@teimurjan
teimurjan / App.js
Last active May 21, 2018 06:11
blog-digits-recognizer-python-flask-react-3
import React, { Component } from "react";
import logo from "./assets/logo.svg";
import "./assets/App.css";
import { SketchField, Tools } from "react-sketch";
import { makePrediction } from "./api";
const pixels = count => `${count}px`;
const percents = count => `${count}px`;
const MAIN_CONTAINER_WIDTH_PX = 200;