From 9447a6ce1070126d580e302b33dbce80e8cf46f8 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Thu, 3 Mar 2016 18:25:01 -0600 Subject: [PATCH] feat: pre-compile babel when used in production --- .gitignore | 2 ++ Procfile | 2 +- common/browserify.js | 7 +++++++ common/index.js | 14 +++++++------- package.json | 1 + tasks/gulp-babelify.js | 2 +- tasks/gulp-build.js | 17 ++++++++++++++++- website/src/server.js | 4 +++- 8 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 common/browserify.js diff --git a/.gitignore b/.gitignore index fabd0fa020..a8e969e620 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ .DS_Store website/public/gen website/public/common +website/transpiled-babel/ +common/transpiled-babel/ node_modules *.swp .idea* diff --git a/Procfile b/Procfile index c23771318e..5283f654f1 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: node ./website/src/server.js +web: node ./website/transpiled-babel/server.js diff --git a/common/browserify.js b/common/browserify.js new file mode 100644 index 0000000000..0530144839 --- /dev/null +++ b/common/browserify.js @@ -0,0 +1,7 @@ +var shared = require('./script/index'); +var _ = require('lodash'); +var moment = require('moment'); + +window.habitrpgShared = shared; +window._ = _; +window.moment = moment; diff --git a/common/index.js b/common/index.js index e6a9c9fb98..35785e2145 100644 --- a/common/index.js +++ b/common/index.js @@ -1,9 +1,9 @@ -module.exports = require('./script/index'); -var _ = require('lodash'); -var moment = require('moment'); +var pathToCommon; -if (typeof window !== 'undefined') { - window.habitrpgShared = module.exports; - window._ = _; - window.moment = moment; +if (process.env.NODE_ENV === 'production') { + pathToCommon = './transpiled-babel/index'; +} else { + pathToCommon = './script/index'; } + +module.exports = require(pathToCommon); diff --git a/package.json b/package.json index 7eb5812901..c50623a792 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "grunt-hashres": "~0.4.1", "grunt-karma": "~0.12.1", "gulp": "^3.9.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.0.0", "gulp-grunt": "^0.5.2", "gulp-imagemin": "^2.3.0", diff --git a/tasks/gulp-babelify.js b/tasks/gulp-babelify.js index 7516594fee..5baa45fbd3 100644 --- a/tasks/gulp-babelify.js +++ b/tasks/gulp-babelify.js @@ -8,7 +8,7 @@ import babel from 'babelify'; gulp.task('browserify', function () { let bundler = browserify({ - entries: './common/index.js', + entries: './common/browserify.js', debug: true, transform: [[babel, { compact: false }]], }); diff --git a/tasks/gulp-build.js b/tasks/gulp-build.js index 599d577b10..2fd34d0121 100644 --- a/tasks/gulp-build.js +++ b/tasks/gulp-build.js @@ -1,4 +1,5 @@ import gulp from 'gulp'; +import babel from 'gulp-babel'; require('gulp-grunt')(gulp); gulp.task('build', () => { @@ -9,6 +10,20 @@ gulp.task('build', () => { } }); +gulp.task('build:src', () => { + return gulp.src('website/src/**/*.js') + .pipe(babel()) + .pipe(gulp.dest('website/transpiled-babel/')); +}); + +gulp.task('build:common', () => { + return gulp.src('common/script/**/*.js') + .pipe(babel()) + .pipe(gulp.dest('common/transpiled-babel/')); +}); + +gulp.task('build:server', ['build:src', 'build:common']); + gulp.task('build:dev', ['browserify', 'prepare:staticNewStuff'], (done) => { gulp.start('grunt-build:dev', done); }); @@ -17,6 +32,6 @@ gulp.task('build:dev:watch', ['build:dev'], () => { gulp.watch(['website/public/**/*.styl', 'common/script/*']); }); -gulp.task('build:prod', ['browserify', 'prepare:staticNewStuff'], (done) => { +gulp.task('build:prod', ['browserify', 'build:server', 'prepare:staticNewStuff'], (done) => { gulp.start('grunt-build:prod', done); }); diff --git a/website/src/server.js b/website/src/server.js index 9910f22160..1412df7bbf 100644 --- a/website/src/server.js +++ b/website/src/server.js @@ -1,4 +1,6 @@ -require('babel-register'); +if (process.env.NODE_ENV !== 'production') { + require('babel-register'); +} // Only do the minimal amount of work before forking just in case of a dyno restart var cluster = require("cluster"); var _ = require('lodash');