diff --git a/.gitignore b/.gitignore index 23f78825cb..db9a64ac62 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,7 @@ config.json npm-debug.log lib public/bower_components -builtAssets/ +public/build src/*/*.map src/*/*/*.map diff --git a/.nodemonignore b/.nodemonignore index 68d5ae31ba..b368c0d00f 100644 --- a/.nodemonignore +++ b/.nodemonignore @@ -1,2 +1,2 @@ -/public/* -/assets/* \ No newline at end of file +/views/* +/public/build/* \ No newline at end of file diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000000..a8f5a01d30 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,145 @@ +/*global module:false*/ +module.exports = function(grunt) { + + // Project configuration. + grunt.initConfig({ + + clean: { + build: ['public/build'] + }, + + uglify: { + buildApp: { + files: { + 'public/build/app.js': [ + 'public/bower_components/jquery/jquery.min.js', + 'public/bower_components/bootstrap-growl/jquery.bootstrap-growl.min.js', + 'public/bower_components/angular/angular.min.js', + 'public/bower_components/angular-sanitize/angular-sanitize.min.js', + 'public/bower_components/angular-route/angular-route.min.js', + 'public/bower_components/angular-resource/angular-resource.min.js', + 'public/bower_components/angular-ui/build/angular-ui.min.js', + 'public/bower_components/angular-ui-utils/modules/keypress/keypress.js', + // we'll remove this once angular-bootstrap is fixed + 'public/bower_components/bootstrap/docs/assets/js/bootstrap.min.js', + 'public/bower_components/angular-bootstrap/ui-bootstrap.min.js', + 'public/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js', + // Sortable + 'public/bower_components/jquery-ui/ui/minified/jquery.ui.core.min.js', + 'public/bower_components/jquery-ui/ui/minified/jquery.ui.widget.min.js', + 'public/bower_components/jquery-ui/ui/minified/jquery.ui.mouse.min.js', + 'public/bower_components/jquery-ui/ui/minified/jquery.ui.sortable.min.js', + // habitrpg-shared + 'public/bower_components/habitrpg-shared/dist/habitrpg-shared.js', + // app + 'public/js/app.js', + 'public/js/services/authServices.js', + 'public/js/services/notificationServices.js', + 'public/js/services/sharedServices.js', + 'public/js/services/userServices.js', + 'public/js/services/groupServices.js', + + 'public/js/filters/filters.js', + + 'public/js/directives/directives.js', + + 'public/js/controllers/authCtrl.js', + 'public/js/controllers/characterCtrl.js', + 'public/js/controllers/menuCtrl.js', + 'public/js/controllers/notificationCtrl.js', + 'public/js/controllers/rootCtrl.js', + 'public/js/controllers/settingsCtrl.js', + 'public/js/controllers/statsCtrl.js', + 'public/js/controllers/tasksCtrl.js', + 'public/js/controllers/taskDetailsCtrl.js', + 'public/js/controllers/filtersCtrl.js', + 'public/js/controllers/userAvatarCtrl.js', + 'public/js/controllers/groupsCtrl.js', + 'public/js/controllers/petsCtrl.js', + 'public/js/controllers/inventoryCtrl.js', + 'public/js/controllers/marketCtrl.js', + 'public/js/controllers/footerCtrl.js' + ] + } + }, + buildStatic: { + files: { + 'public/build/static.js': [ + 'public/bower_components/jquery/jquery.min.js', + 'public/bower_components/habitrpg-shared/dist/habitrpg-shared.js', + 'public/bower_components/angular/angular.min.js', + 'public/bower_components/bootstrap/docs/assets/js/bootstrap.min.js', + + 'public/js/static.js', + 'public/js/services/userServices.js', + 'public/js/controllers/authCtrl.js' + ] + } + } + }, + + stylus: { + build: { + options: { + compress: false, // AFTER + 'include css': true, + paths: ['public'] + }, + files: { + 'public/build/app.css': ['public/css/index.styl'], + 'public/build/static.css': ['public/css/static.styl'] + } + } + }, + + cssmin: { + build: { + files: { + 'public/build/app.css': ['public/build/app.css'], + 'public/build/static.css': ['public/build/static.css'] + } + } + }, + + exec: { + start: { + cmd: function(mode){ + if(mode && mode == 'production'){ + return 'nodemon --exec "./start.sh" production' + }else{ + return 'nodemon --exec "./start.sh"' + } + } + } + } + + /*hashres: { + options: { + fileNameFormat: '${name}-${hash}.${ext}', + }, + build: { + src: [ + 'public/build/app.js', + 'public/build/static.js' + ], + dest: 'views/i-do-not-exist.jade' // Non existing file! + } + }*/ + + }); + + // Register tasks. + grunt.registerTask('production', ['clean:build', 'uglify', 'stylus', 'cssmin']); + grunt.registerTask('development', ['clean:build', 'stylus', 'cssmin']); + grunt.registerTask('start:production', ['exec:start:production']); + grunt.registerTask('start', ['exec:start']); + + // Load tasks + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-hashres'); + grunt.loadNpmTasks('grunt-contrib-clean'); + grunt.loadNpmTasks('grunt-contrib-stylus'); + grunt.loadNpmTasks('grunt-contrib-cssmin'); + grunt.loadNpmTasks('grunt-exec'); + +}; diff --git a/README.md b/README.md index 7a4136bb4a..74e0f3a427 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Or, expressed in commands on the command line: 1. `git clone --recursive -b angular_rewrite https://github.com/lefnire/habitrpg.git` 1. `cd habitrpg && npm install` -1. `npm start` +1. `grunt start` (`grunt start:production` to concat & minify js) To access the site, open http://localhost:3000 in your browser. @@ -76,7 +76,7 @@ Ignore this error and proceed with the following: 1. Run 'npm install -g bower' 1. Run 'bower install -f' 1. Run 'copy config.json.example config.json' -1. Run 'npm start' +1. `grunt start` (`grunt start:production` to concat & minify js) Open a browser to URL http://localhost:3000 to test the application. diff --git a/assets/js/appMain.js b/assets/js/appMain.js deleted file mode 100644 index 27676bbef9..0000000000 --- a/assets/js/appMain.js +++ /dev/null @@ -1,27 +0,0 @@ -//= require app -//= require services/authServices -//= require services/notificationServices -//= require services/sharedServices -//= require services/userServices -//= require services/groupServices - -//= require filters/filters - -//= require directives/directives - -//= require controllers/authCtrl -//= require controllers/characterCtrl -//= require controllers/menuCtrl -//= require controllers/notificationCtrl -//= require controllers/rootCtrl -//= require controllers/settingsCtrl -//= require controllers/statsCtrl -//= require controllers/tasksCtrl -//= require controllers/taskDetailsCtrl -//= require controllers/filtersCtrl -//= require controllers/userAvatarCtrl -//= require controllers/groupsCtrl -//= require controllers/petsCtrl -//= require controllers/inventoryCtrl -//= require controllers/marketCtrl -//= require controllers/footerCtrl \ No newline at end of file diff --git a/assets/js/staticMain.js b/assets/js/staticMain.js deleted file mode 100644 index 41ddde7826..0000000000 --- a/assets/js/staticMain.js +++ /dev/null @@ -1,3 +0,0 @@ -//= require static -//= require services/userServices -//= require controllers/authCtrl \ No newline at end of file diff --git a/bower.json b/bower.json index 50272df8f6..03e37661bf 100644 --- a/bower.json +++ b/bower.json @@ -35,7 +35,6 @@ }, "resolutions": { "jquery": "~2.0.3", - "bootstrap": "v2.3.2", - "angular-sanitize": "1.2.0-rc.1" + "bootstrap": "v2.3.2" } } diff --git a/package.json b/package.json index 25c0cae0b3..50030365ad 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,13 @@ "optimist": "~0.5.2", "mongoose": "~3.6.18", "stylus": "~0.37.0", - "connect-assets": "~2.5.2", + "grunt": "~0.4.1", + "grunt-contrib-uglify": "~0.2.4", + "grunt-hashres": "~0.3.2", + "grunt-contrib-stylus": "~0.8.0", + "grunt-contrib-clean": "~0.5.0", + "grunt-contrib-cssmin": "~0.6.1", + "grunt-exec": "~0.4.x", "bower": "~1.2.4", "nib": "~1.0.1", "jade": "~0.35.0", @@ -44,7 +50,6 @@ "npm": "1.2.x" }, "scripts": { - "start": "nodemon src/server.js", "test": "mocha test/api.mocha.coffee", "postinstall": "./node_modules/bower/bin/bower install -f" } diff --git a/assets/css/README.md b/public/css/README.md similarity index 100% rename from assets/css/README.md rename to public/css/README.md diff --git a/assets/css/alerts.styl b/public/css/alerts.styl similarity index 100% rename from assets/css/alerts.styl rename to public/css/alerts.styl diff --git a/assets/css/avatar.styl b/public/css/avatar.styl similarity index 100% rename from assets/css/avatar.styl rename to public/css/avatar.styl diff --git a/assets/css/challenges.styl b/public/css/challenges.styl similarity index 100% rename from assets/css/challenges.styl rename to public/css/challenges.styl diff --git a/assets/css/color-vars.styl b/public/css/color-vars.styl similarity index 100% rename from assets/css/color-vars.styl rename to public/css/color-vars.styl diff --git a/assets/css/customizer.styl b/public/css/customizer.styl similarity index 100% rename from assets/css/customizer.styl rename to public/css/customizer.styl diff --git a/assets/css/filters.styl b/public/css/filters.styl similarity index 100% rename from assets/css/filters.styl rename to public/css/filters.styl diff --git a/assets/css/game-pane.styl b/public/css/game-pane.styl similarity index 100% rename from assets/css/game-pane.styl rename to public/css/game-pane.styl diff --git a/assets/css/header.styl b/public/css/header.styl similarity index 100% rename from assets/css/header.styl rename to public/css/header.styl diff --git a/assets/css/helpers.styl b/public/css/helpers.styl similarity index 100% rename from assets/css/helpers.styl rename to public/css/helpers.styl diff --git a/assets/css/index.styl b/public/css/index.styl similarity index 90% rename from assets/css/index.styl rename to public/css/index.styl index 0ac2acf0c6..df1a3674f2 100644 --- a/assets/css/index.styl +++ b/public/css/index.styl @@ -1,7 +1,10 @@ @import "nib/vendor" // Vendor Includes - include first so we can override -@import "../../../public/bower_components/bootstrap-datepicker/css/datepicker.css" +// Import only styles that do not have urls to images! Include them directly in the page! +@import "../bower_components/bootstrap-datepicker/css/datepicker.css" +@import "../bower_components/angular-ui/build/angular-ui.min.css" +@import "../bower_components/bootstrap/docs/assets/css/bootstrap-responsive.css" // Custom includes @import "./tasks.styl" diff --git a/assets/css/inventory.styl b/public/css/inventory.styl similarity index 100% rename from assets/css/inventory.styl rename to public/css/inventory.styl diff --git a/assets/css/items.styl b/public/css/items.styl similarity index 100% rename from assets/css/items.styl rename to public/css/items.styl diff --git a/assets/css/npcs.styl b/public/css/npcs.styl similarity index 100% rename from assets/css/npcs.styl rename to public/css/npcs.styl diff --git a/assets/css/responsive.styl b/public/css/responsive.styl similarity index 100% rename from assets/css/responsive.styl rename to public/css/responsive.styl diff --git a/assets/css/scrollbars.styl b/public/css/scrollbars.styl similarity index 100% rename from assets/css/scrollbars.styl rename to public/css/scrollbars.styl diff --git a/public/css/static.styl b/public/css/static.styl new file mode 100644 index 0000000000..4de9de0283 --- /dev/null +++ b/public/css/static.styl @@ -0,0 +1,5 @@ +// Vendor Includes - include first so we can override +// Import only styles that do not have urls to images! Include them directly in the page! + +@import "./static-pages.css" +@import "./footer.css" \ No newline at end of file diff --git a/assets/css/tasks.styl b/public/css/tasks.styl similarity index 100% rename from assets/css/tasks.styl rename to public/css/tasks.styl diff --git a/assets/js/app.js b/public/js/app.js similarity index 100% rename from assets/js/app.js rename to public/js/app.js diff --git a/assets/js/controllers/authCtrl.js b/public/js/controllers/authCtrl.js similarity index 100% rename from assets/js/controllers/authCtrl.js rename to public/js/controllers/authCtrl.js diff --git a/assets/js/controllers/characterCtrl.js b/public/js/controllers/characterCtrl.js similarity index 100% rename from assets/js/controllers/characterCtrl.js rename to public/js/controllers/characterCtrl.js diff --git a/assets/js/controllers/filtersCtrl.js b/public/js/controllers/filtersCtrl.js similarity index 100% rename from assets/js/controllers/filtersCtrl.js rename to public/js/controllers/filtersCtrl.js diff --git a/assets/js/controllers/footerCtrl.js b/public/js/controllers/footerCtrl.js similarity index 100% rename from assets/js/controllers/footerCtrl.js rename to public/js/controllers/footerCtrl.js diff --git a/assets/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js similarity index 100% rename from assets/js/controllers/groupsCtrl.js rename to public/js/controllers/groupsCtrl.js diff --git a/assets/js/controllers/inventoryCtrl.js b/public/js/controllers/inventoryCtrl.js similarity index 100% rename from assets/js/controllers/inventoryCtrl.js rename to public/js/controllers/inventoryCtrl.js diff --git a/assets/js/controllers/marketCtrl.js b/public/js/controllers/marketCtrl.js similarity index 100% rename from assets/js/controllers/marketCtrl.js rename to public/js/controllers/marketCtrl.js diff --git a/assets/js/controllers/menuCtrl.js b/public/js/controllers/menuCtrl.js similarity index 100% rename from assets/js/controllers/menuCtrl.js rename to public/js/controllers/menuCtrl.js diff --git a/assets/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js similarity index 100% rename from assets/js/controllers/notificationCtrl.js rename to public/js/controllers/notificationCtrl.js diff --git a/assets/js/controllers/petsCtrl.js b/public/js/controllers/petsCtrl.js similarity index 100% rename from assets/js/controllers/petsCtrl.js rename to public/js/controllers/petsCtrl.js diff --git a/assets/js/controllers/rootCtrl.js b/public/js/controllers/rootCtrl.js similarity index 100% rename from assets/js/controllers/rootCtrl.js rename to public/js/controllers/rootCtrl.js diff --git a/assets/js/controllers/settingsCtrl.js b/public/js/controllers/settingsCtrl.js similarity index 100% rename from assets/js/controllers/settingsCtrl.js rename to public/js/controllers/settingsCtrl.js diff --git a/assets/js/controllers/statsCtrl.js b/public/js/controllers/statsCtrl.js similarity index 100% rename from assets/js/controllers/statsCtrl.js rename to public/js/controllers/statsCtrl.js diff --git a/assets/js/controllers/taskDetailsCtrl.js b/public/js/controllers/taskDetailsCtrl.js similarity index 100% rename from assets/js/controllers/taskDetailsCtrl.js rename to public/js/controllers/taskDetailsCtrl.js diff --git a/assets/js/controllers/tasksCtrl.js b/public/js/controllers/tasksCtrl.js similarity index 100% rename from assets/js/controllers/tasksCtrl.js rename to public/js/controllers/tasksCtrl.js diff --git a/assets/js/controllers/userAvatarCtrl.js b/public/js/controllers/userAvatarCtrl.js similarity index 100% rename from assets/js/controllers/userAvatarCtrl.js rename to public/js/controllers/userAvatarCtrl.js diff --git a/assets/js/directives/directives.js b/public/js/directives/directives.js similarity index 100% rename from assets/js/directives/directives.js rename to public/js/directives/directives.js diff --git a/assets/js/filters/filters.js b/public/js/filters/filters.js similarity index 100% rename from assets/js/filters/filters.js rename to public/js/filters/filters.js diff --git a/assets/js/services/authServices.js b/public/js/services/authServices.js similarity index 100% rename from assets/js/services/authServices.js rename to public/js/services/authServices.js diff --git a/assets/js/services/groupServices.js b/public/js/services/groupServices.js similarity index 100% rename from assets/js/services/groupServices.js rename to public/js/services/groupServices.js diff --git a/assets/js/services/notificationServices.js b/public/js/services/notificationServices.js similarity index 100% rename from assets/js/services/notificationServices.js rename to public/js/services/notificationServices.js diff --git a/assets/js/services/sharedServices.js b/public/js/services/sharedServices.js similarity index 100% rename from assets/js/services/sharedServices.js rename to public/js/services/sharedServices.js diff --git a/assets/js/services/userServices.js b/public/js/services/userServices.js similarity index 100% rename from assets/js/services/userServices.js rename to public/js/services/userServices.js diff --git a/assets/js/static.js b/public/js/static.js similarity index 100% rename from assets/js/static.js rename to public/js/static.js diff --git a/src/middleware.js b/src/middleware.js index 493c92d3ff..1273287295 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -29,7 +29,7 @@ module.exports.cors = function(req, res, next) { module.exports.locals = function(req, res, next) { res.locals.habitrpg = res.locals.habitrpg || {} _.defaults(res.locals.habitrpg, { - NODE_ENV: req.url.split('/')[1] == 'static' ? 'production' : nconf.get('NODE_ENV'), // Don't show debugging options on static pages + NODE_ENV: nconf.get('NODE_ENV'), // Don't show debugging options on static pages IS_MOBILE: /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(req.header('User-Agent')), STRIPE_PUB_KEY: nconf.get('STRIPE_PUB_KEY') }); diff --git a/src/routes/pages.js b/src/routes/pages.js index 8e1f7fe590..e60bd0ee4d 100644 --- a/src/routes/pages.js +++ b/src/routes/pages.js @@ -12,17 +12,17 @@ router.get('/', function(req, res) { }); router.get('/partials/tasks', function(req, res) { - res.render('tasks/index'); + res.render('tasks/index', {env: res.locals.habitrpg}); }); router.get('/partials/options', function(req, res) { - res.render('options'); + res.render('options', {env: res.locals.habitrpg}); }); // -------- Marketing -------- router.get('/splash.html', function(req, res) { - res.redirect('/static/front'); + res.redirect('/static/front', {env: res.locals.habitrpg}); }); router.get('/static/front', function(req, res) { diff --git a/src/server.js b/src/server.js index 0e5fc8e006..7db81884d0 100644 --- a/src/server.js +++ b/src/server.js @@ -67,14 +67,14 @@ passport.use(new FacebookStrategy({ // ------------ Server Configuration ------------ app.set("port", nconf.get('PORT')); +app.use(express.logger("dev")); +app.use(express.compress()); app.set("views", __dirname + "/../views"); app.set("view engine", "jade"); app.use(express.favicon()); -app.use(express.logger("dev")); app.use(middleware.cors); app.use(middleware.forceSSL); app.use(express.bodyParser()); -app.use(require('connect-assets')()); app.use(express.methodOverride()); //app.use(express.cookieParser(nconf.get('SESSION_SECRET'))); app.use(express.cookieParser()); diff --git a/start.sh b/start.sh new file mode 100755 index 0000000000..05885587fa --- /dev/null +++ b/start.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +if [ $1 = "production" ]; then + echo "Starting production server"; + grunt production; +else + echo "Starting development server"; + grunt development; +fi + +node ./src/server.js \ No newline at end of file diff --git a/views/index.jade b/views/index.jade index e4904ef1ad..792f1e7564 100644 --- a/views/index.jade +++ b/views/index.jade @@ -13,36 +13,64 @@ html // CSS link(rel='stylesheet', href='/bower_components/bootstrap/docs/assets/css/bootstrap.css') - link(rel='stylesheet', href='/bower_components/bootstrap/docs/assets/css/bootstrap-responsive.css') - link(rel='stylesheet', href='/bower_components/angular-ui/build/angular-ui.min.css') - != css('index') + + link(rel='stylesheet', href='/build/app.css') // HabitRPG Shared link(rel='stylesheet', href='/bower_components/habitrpg-shared/dist/spritesheets.css') - // JS - script(type='text/javascript', src='/bower_components/jquery/jquery.min.js') - script(type='text/javascript', src='/bower_components/bootstrap-growl/jquery.bootstrap-growl.min.js') - script(type='text/javascript', src='/bower_components/angular/angular.min.js') - script(type='text/javascript', src='/bower_components/angular-sanitize/angular-sanitize.min.js') - script(type='text/javascript', src='/bower_components/angular-route/angular-route.min.js') - script(type='text/javascript', src='/bower_components/angular-resource/angular-resource.min.js') - script(type='text/javascript', src='/bower_components/angular-ui/build/angular-ui.min.js') - script(type='text/javascript', src='/bower_components/angular-ui-utils/modules/keypress/keypress.js') - // we'll remove this once angular-bootstrap is fixed - script(type='text/javascript', src='/bower_components/bootstrap/docs/assets/js/bootstrap.min.js') - script(type='text/javascript', src='/bower_components/angular-bootstrap/ui-bootstrap.min.js') - script(type='text/javascript', src='/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js') + - if(env.NODE_ENV == 'production'){ + script(type='text/javascript', src='build/app.js') + - }else{ + // Remember to update the file list in Gruntfile.js! + script(type='text/javascript', src='/bower_components/jquery/jquery.min.js') + script(type='text/javascript', src='/bower_components/bootstrap-growl/jquery.bootstrap-growl.min.js') + script(type='text/javascript', src='/bower_components/angular/angular.min.js') + script(type='text/javascript', src='/bower_components/angular-sanitize/angular-sanitize.min.js') + script(type='text/javascript', src='/bower_components/angular-route/angular-route.min.js') + script(type='text/javascript', src='/bower_components/angular-resource/angular-resource.min.js') + script(type='text/javascript', src='/bower_components/angular-ui/build/angular-ui.min.js') + script(type='text/javascript', src='/bower_components/angular-ui-utils/modules/keypress/keypress.js') + // we'll remove this once angular-bootstrap is fixed + script(type='text/javascript', src='/bower_components/bootstrap/docs/assets/js/bootstrap.min.js') + script(type='text/javascript', src='/bower_components/angular-bootstrap/ui-bootstrap.min.js') + script(type='text/javascript', src='/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js') + // Sortable + script(type='text/javascript', src='/bower_components/jquery-ui/ui/minified/jquery.ui.core.min.js') + script(type='text/javascript', src='/bower_components/jquery-ui/ui/minified/jquery.ui.widget.min.js') + script(type='text/javascript', src='/bower_components/jquery-ui/ui/minified/jquery.ui.mouse.min.js') + script(type='text/javascript', src='/bower_components/jquery-ui/ui/minified/jquery.ui.sortable.min.js') + // habitrpg-shared + script(type='text/javascript', src='/bower_components/habitrpg-shared/dist/habitrpg-shared.js') + // app + script(type='text/javascript', src='/js/app.js') + script(type='text/javascript', src='/js/services/authServices.js') + script(type='text/javascript', src='/js/services/notificationServices.js') + script(type='text/javascript', src='/js/services/sharedServices.js') + script(type='text/javascript', src='/js/services/userServices.js') + script(type='text/javascript', src='/js/services/groupServices.js') - // Sortable - script(type='text/javascript', src='/bower_components/jquery-ui/ui/minified/jquery.ui.core.min.js') - script(type='text/javascript', src='/bower_components/jquery-ui/ui/minified/jquery.ui.widget.min.js') - script(type='text/javascript', src='/bower_components/jquery-ui/ui/minified/jquery.ui.mouse.min.js') - script(type='text/javascript', src='/bower_components/jquery-ui/ui/minified/jquery.ui.sortable.min.js') + script(type='text/javascript', src='/js/filters/filters.js') - script(type='text/javascript', src='/bower_components/habitrpg-shared/dist/habitrpg-shared.js') + script(type='text/javascript', src='/js/directives/directives.js') - != js('appMain') + script(type='text/javascript', src='/js/controllers/authCtrl.js') + script(type='text/javascript', src='/js/controllers/characterCtrl.js') + script(type='text/javascript', src='/js/controllers/menuCtrl.js') + script(type='text/javascript', src='/js/controllers/notificationCtrl.js') + script(type='text/javascript', src='/js/controllers/rootCtrl.js') + script(type='text/javascript', src='/js/controllers/settingsCtrl.js') + script(type='text/javascript', src='/js/controllers/statsCtrl.js') + script(type='text/javascript', src='/js/controllers/tasksCtrl.js') + script(type='text/javascript', src='/js/controllers/taskDetailsCtrl.js') + script(type='text/javascript', src='/js/controllers/filtersCtrl.js') + script(type='text/javascript', src='/js/controllers/userAvatarCtrl.js') + script(type='text/javascript', src='/js/controllers/groupsCtrl.js') + script(type='text/javascript', src='/js/controllers/petsCtrl.js') + script(type='text/javascript', src='/js/controllers/inventoryCtrl.js') + script(type='text/javascript', src='/js/controllers/marketCtrl.js') + script(type='text/javascript', src='/js/controllers/footerCtrl.js') + -} //webfonts link(href='//fonts.googleapis.com/css?family=Lato:300,400,700,400italic,700italic', rel='stylesheet', type='text/css') diff --git a/views/static/front.jade b/views/static/front.jade index 8e7ffe92cd..d55d63ba70 100644 --- a/views/static/front.jade +++ b/views/static/front.jade @@ -1,4 +1,7 @@ extends ./layout +//Trick needed to pass 'env' to ./layout +block vars + - var layoutEnv = env block title title HabitRPG | Gamify Your Life diff --git a/views/static/layout.jade b/views/static/layout.jade index f2222d9d71..d001bb5f4a 100644 --- a/views/static/layout.jade +++ b/views/static/layout.jade @@ -1,3 +1,5 @@ +//Trick needed to pass 'env' to ./layout +block vars doctype 5 html @@ -10,24 +12,30 @@ html // CSS link(rel='stylesheet', href='/bower_components/bootstrap/docs/assets/css/bootstrap.css') + // Keep this out of build because the one after has some images and would like not to override it link(rel='stylesheet', href='/bower_components/bootstrap/docs/assets/css/bootstrap-responsive.css') link(href='/bower_components/bootstrap/docs/assets/css/docs.css', rel='stylesheet') - link(href='/css/static-pages.css', rel='stylesheet') - link(href='/css/footer.css', rel='stylesheet') - - // FIXME we gotta get rid of all these requirements in userServices. we don't need habitrpg-shared, lodash, moment, etc here - // and habitrpg-shared alone is ~700kb + + link(rel='stylesheet', href='/build/static.css') // JS - script(type='text/javascript', src='/bower_components/jquery/jquery.min.js') - script(type='text/javascript', src='/bower_components/habitrpg-shared/dist/habitrpg-shared.js') - script(type='text/javascript', src='/bower_components/angular/angular.min.js') - script(type='text/javascript', src='/bower_components/bootstrap/docs/assets/js/bootstrap.min.js') + - if(layoutEnv.NODE_ENV == 'production'){ + script(type='text/javascript', src='/build/static.js') + - }else{ + // Remember to update the file list in Gruntfile.js! + script(type='text/javascript', src='/bower_components/jquery/jquery.min.js') + script(type='text/javascript', src='/bower_components/habitrpg-shared/dist/habitrpg-shared.js') + script(type='text/javascript', src='/bower_components/angular/angular.min.js') + script(type='text/javascript', src='/bower_components/bootstrap/docs/assets/js/bootstrap.min.js') + + script(type='text/javascript', src='/js/static.js') + script(type='text/javascript', src='/js/services/userServices.js') + script(type='text/javascript', src='/js/controllers/authCtrl.js') + -} + script(type='text/javascript'). $.getScript("//s7.addthis.com/js/250/addthis_widget.js#pubid=lefnire"); - != js('staticMain') - body block content diff --git a/views/static/privacy.jade b/views/static/privacy.jade index cda199004e..f51601be32 100644 --- a/views/static/privacy.jade +++ b/views/static/privacy.jade @@ -1,4 +1,7 @@ extends ./layout +//Trick needed to pass 'env' to ./layout +block vars + - var layoutEnv = env block title title HabitRPG | Privacy diff --git a/views/static/terms.jade b/views/static/terms.jade index bc1c7e3df1..527b2589d5 100644 --- a/views/static/terms.jade +++ b/views/static/terms.jade @@ -1,4 +1,7 @@ extends ./layout +//Trick needed to pass 'env' to ./layout +block vars + - var layoutEnv = env block title title HabitRPG | Terms