From 45774afc6fb69567ee529812779ee6fdd6821f48 Mon Sep 17 00:00:00 2001 From: Jason Miller Date: Sat, 13 Aug 2016 20:25:19 -0400 Subject: [PATCH 1/2] Port to preact for a 50% size reduction with (basically) no code changes :D --- js/app.js | 5 ++--- js/constants/AppConstants.js | 2 +- js/stores/AppStore.js | 2 +- makewebpackconfig.js | 6 ++++++ package.json | 10 ++-------- 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/js/app.js b/js/app.js index 3f386fd..cfeb878 100644 --- a/js/app.js +++ b/js/app.js @@ -1,10 +1,9 @@ -window.React = require('react'); +// combine react & react-dom/server to emulate React 0.12.x +window.React = Object.assign(require('react'), require('react-dom/server')); var App = require('./components/App.react'); var css = require('./../css/app.css'); require('../img/social_media.png'); -React.initializeTouchEvents(true); - // Render the app component (js/components/App.react.js) React.render( , diff --git a/js/constants/AppConstants.js b/js/constants/AppConstants.js index ea53ed8..f825214 100644 --- a/js/constants/AppConstants.js +++ b/js/constants/AppConstants.js @@ -1,4 +1,4 @@ -var keyMirror = require('react/lib/keyMirror'); +var keyMirror = obj => Object.keys(obj).reduce( (acc, key) => ((acc[key]=key), acc), {} ); // Define actions module.exports = keyMirror({ diff --git a/js/stores/AppStore.js b/js/stores/AppStore.js index 665daf9..c998ed4 100644 --- a/js/stores/AppStore.js +++ b/js/stores/AppStore.js @@ -2,7 +2,7 @@ var AppDispatcher = require('../dispatcher/AppDispatcher'); var AppActions = require('../actions/AppActions'); var EventEmitter = require('events').EventEmitter; var AppConstants = require('../constants/AppConstants'); -var assign = require('react/lib/Object.assign'); +var assign = Object.assign || ((obj, props) => { for (let i in props) obj[i] = props[i]; return obj; }); /** * DATA diff --git a/makewebpackconfig.js b/makewebpackconfig.js index ad84abc..62bd1d8 100644 --- a/makewebpackconfig.js +++ b/makewebpackconfig.js @@ -60,6 +60,12 @@ module.exports = function(options) { path: path.resolve(__dirname, 'build'), filename: "js/bundle.js" }, + resolve: { + alias: { + react: 'preact-compat', + 'react-dom': 'preact-compat' + } + }, module: { loaders: [{ test: /\.js$/, // Transform all .js files required somewhere within an entry point... diff --git a/package.json b/package.json index 007dd29..96d8ce7 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "main": "js/app.js", "dependencies": { "flux": "^2.0.0", - "react": "^0.12.0" + "preact": "^5.6.0", + "preact-compat": "^2.3.0" }, "devDependencies": { "appcache-webpack-plugin": "1.2.1", @@ -31,7 +32,6 @@ "postcss-nested": "^1.0.0", "postcss-reporter": "^0.4.0", "postcss-simple-vars": "^0.3.0", - "react-hot-loader": "^1.2.8", "style-loader": "^0.12.3", "url-loader": "^0.5.6", "webpack": "^1.10.5", @@ -41,12 +41,6 @@ "start": "node server.js", "build": "rm -rf build | webpack --config webpack.build.config.js --progress --colors -p" }, - "browserify": { - "transform": [ - "reactify", - "envify" - ] - }, "repository": { "type": "git", "url": "git://github.com/mstoiber/sharing.git" From c1661966fb7089f4d685d8002042ff5247c59f15 Mon Sep 17 00:00:00 2001 From: Jason Miller Date: Sun, 28 Aug 2016 12:48:43 -0400 Subject: [PATCH 2/2] =?UTF-8?q?Update=20to=20preact=206=20&=20preact-compa?= =?UTF-8?q?t=203!=20=F0=9F=92=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 96d8ce7..2be4c25 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "main": "js/app.js", "dependencies": { "flux": "^2.0.0", - "preact": "^5.6.0", - "preact-compat": "^2.3.0" + "preact": "^6.0.0", + "preact-compat": "^3.0.0" }, "devDependencies": { "appcache-webpack-plugin": "1.2.1",