diff --git a/.babelrc b/.babelrc deleted file mode 100644 index e50f017c4d..0000000000 --- a/.babelrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "presets": ["es2015-webpack"], - "highlightCode": true -} diff --git a/bower.json b/bower.json index 56edea0e14..e3d5d4df90 100644 --- a/bower.json +++ b/bower.json @@ -11,6 +11,7 @@ "polymer": "Polymer/polymer#~1.6", "pikaday": "1.4", "leaflet-map": "1.2.0", + "moment": "^2.14.1", "iron-elements": "PolymerElements/iron-elements#~1.0.10", "paper-elements": "PolymerElements/paper-elements#~1.0.7", "google-apis": "GoogleWebComponents/google-apis#~1.1.6", diff --git a/home-assistant-js b/home-assistant-js index c2c9c4b06e..a6c3137704 160000 --- a/home-assistant-js +++ b/home-assistant-js @@ -1 +1 @@ -Subproject commit c2c9c4b06ee943b7ed1974fcabf5cf7445795696 +Subproject commit a6c313770469b7f2f603682914a9a14f3d7ccaaa diff --git a/package.json b/package.json index b74a2c7a48..614c05d6d4 100644 --- a/package.json +++ b/package.json @@ -7,33 +7,49 @@ "url": "https://github.com/balloob/home-assistant-polymer" }, "scripts": { - "js_dev": "webpack --color --progress -d --watch", - "js_dev_demo": "BUILD_DEMO=1 webpack --color --progress -d --watch", - "js_prod": "BUILD_DEV=0 webpack --color --progress -p", - "js_demo": "BUILD_DEV=0 BUILD_DEMO=1 webpack --color --progress -p", - "frontend_html": "node script/vulcanize.js", + "setup_js_dev": "git submodule init && git submodule update && cd home-assistant-js && npm install", + "js_dev": "watch_ru_all", + "js_dev_demo": "BUILD_DEMO=1 npm run watch_ru_all", + "js_prod": "BUILD_DEV=0 npm run ru_all", + "js_demo": "BUILD_DEV=0 BUILD_DEMO=1 npm run ru_all", + "frontend_html": "script/vulcanize.js", "frontend_prod": "npm run js_prod && npm run frontend_html", "frontend_demo": "npm run js_demo && npm run frontend_html", - "setup_js_dev": "git submodule init && git submodule update && cd home-assistant-js && npm install", + "ru_all": "npm run ru_core | npm run ru_ui | npm run ru_demo", + "ru_core": "rollup --config rollup/core.js", + "ru_ui": "rollup --config rollup/ui.js", + "ru_demo": "rollup --config rollup/demo.js", + "watch_ru_all": "npm run watch_ru_core | npm run watch_ru_ui | npm run watch_ru_demo", + "watch_ru_core": "rollup --config rollup/core.js --watch", + "watch_ru_ui": "rollup --config rollup/ui.js --watch", + "watch_ru_demo": "rollup --config rollup/demo.js --watch", "test": "eslint src" }, "author": "Paulus Schoutsen (http://paulusschoutsen.nl)", "license": "MIT", + "_depComment": "keymirror, nuclear-js, object-assign are for ha-js", "dependencies": { - "classnames": "^2.2.5", - "moment": "^2.14.1" + "keymirror": "^0.1.1", + "nuclear-js": "^1.3.0", + "object-assign": "^4.1.0", + "classnames": "^2.2.5" }, "devDependencies": { - "babel-core": "^6.10", - "babel-loader": "^6.2", - "babel-preset-es2015-webpack": "^6.4.1", "bower": "^1.7.9", "eslint": "^3.0.1", "eslint-config-airbnb-base": "^4.0.0", "eslint-plugin-import": "^1.10.2", "html-minifier": "^3.0.1", + "rollup": "^0.34.1", + "rollup-plugin-babel": "^2.6.1", + "rollup-plugin-buble": "^0.12.1", + "rollup-plugin-commonjs": "^3.1.0", + "rollup-plugin-multi-entry": "^2.0.0", + "rollup-plugin-node-resolve": "^1.7.1", + "rollup-plugin-replace": "^1.1.1", + "rollup-plugin-uglify": "^1.0.1", + "rollup-watch": "^2.5.0", "sw-precache": "^3.2.0", - "vulcanize": "^1.14.8", - "webpack": "^2.1.0-beta.13" + "vulcanize": "^1.14.8" } } diff --git a/rollup/base-config.js b/rollup/base-config.js new file mode 100644 index 0000000000..171ffd9b03 --- /dev/null +++ b/rollup/base-config.js @@ -0,0 +1,34 @@ +import commonjs from 'rollup-plugin-commonjs'; +import nodeResolve from 'rollup-plugin-node-resolve'; +import replace from 'rollup-plugin-replace'; +import buble from 'rollup-plugin-buble'; +import uglify from 'rollup-plugin-uglify'; + +const DEV = !!JSON.parse(process.env.BUILD_DEV || 'true'); +const DEMO = !!JSON.parse(process.env.BUILD_DEMO || 'false'); + +const plugins = [ + nodeResolve(), + + commonjs(), + + replace({ + values: { + __DEV__: JSON.stringify(DEV), + __DEMO__: JSON.stringify(DEMO), + }, + }), + + buble(), +]; + +if (!DEV) { + plugins.push(uglify()); +} + +export default { + format: 'iife', + exports: 'none', + treeshake: true, + plugins, +}; diff --git a/rollup/core.js b/rollup/core.js new file mode 100644 index 0000000000..6e132759c8 --- /dev/null +++ b/rollup/core.js @@ -0,0 +1,8 @@ +import config from './base-config'; + +export default Object.assign({}, config, { + entry: 'src/entry-points/app-core.js', + targets: [ + { dest: 'build/_core_compiled.js', format: 'iife' }, + ], +}); diff --git a/rollup/demo.js b/rollup/demo.js new file mode 100644 index 0000000000..57d7c14407 --- /dev/null +++ b/rollup/demo.js @@ -0,0 +1,8 @@ +import config from './base-config'; + +export default Object.assign({}, config, { + entry: 'home-assistant-js/demo_data/expose_window.js', + targets: [ + { dest: 'build/_demo_data_compiled.js', format: 'iife' }, + ], +}); diff --git a/rollup/ui.js b/rollup/ui.js new file mode 100644 index 0000000000..f65d37f80b --- /dev/null +++ b/rollup/ui.js @@ -0,0 +1,8 @@ +import config from './base-config'; + +export default Object.assign({}, config, { + entry: 'src/entry-points/home-assistant-main.js', + targets: [ + { dest: 'build/_ui_compiled.js', format: 'iife' }, + ], +}); diff --git a/script/rollup.js b/script/rollup.js deleted file mode 100644 index cc9c03492e..0000000000 --- a/script/rollup.js +++ /dev/null @@ -1,48 +0,0 @@ -var rollup = require('rollup').rollup; -var babel = require('rollup-plugin-babel'); -var uglify = require('rollup-plugin-uglify'); -// var commonjs = require('rollup-plugin-commonjs'); -// var nodeResolve = require('rollup-plugin-node-resolve'); - -// rollup({ -// entry: 'src/home-assistant.js', -// plugins: [ -// nodeResolve({ -// jsnext: true, -// main: true, -// }), - -// commonjs({ -// include: 'node_modules/**', -// }), - -// babel({ -// exclude: 'node_modules/**', -// }), -// uglify(), -// ], -// }).then(function (bundle) { -// return bundle.write({ -// format: 'es6', -// // format: 'iife', -// dest: 'build/ui_rollup.js', -// }); -// }).catch(function (err) { -// console.error(err); -// }); - -rollup({ - entry: 'src/app-core.js', - plugins: [ - babel(), - uglify(), - ], -}).then(function (bundle) { - return bundle.write({ - // format: 'es6', - format: 'iife', - dest: 'build/core_rollup.js', - }); -}).catch(function (err) { - console.error(err); -}); diff --git a/script/vulcanize.js b/script/vulcanize.js old mode 100644 new mode 100755 index eeb47dfde0..8e770c5d44 --- a/script/vulcanize.js +++ b/script/vulcanize.js @@ -1,3 +1,5 @@ +#! /usr/bin/env node + var Vulcanize = require('vulcanize'); var minify = require('html-minifier'); var fs = require('fs'); diff --git a/src/entry-points/app-core.js b/src/entry-points/app-core.js index 6e617b070f..b891c517ec 100644 --- a/src/entry-points/app-core.js +++ b/src/entry-points/app-core.js @@ -1,4 +1,4 @@ -import HomeAssistant from '../../home-assistant-js/dist/homeassistant.es6'; +import HomeAssistant from '../../home-assistant-js/src/index'; const hass = new HomeAssistant(); diff --git a/src/layouts/home-assistant-main.html b/src/entry-points/home-assistant-main.html similarity index 97% rename from src/layouts/home-assistant-main.html rename to src/entry-points/home-assistant-main.html index b1f3147330..876458ed0a 100644 --- a/src/layouts/home-assistant-main.html +++ b/src/entry-points/home-assistant-main.html @@ -4,7 +4,6 @@ - diff --git a/src/layouts/home-assistant-main.js b/src/entry-points/home-assistant-main.js similarity index 98% rename from src/layouts/home-assistant-main.js rename to src/entry-points/home-assistant-main.js index 1e2254371c..080e5d3468 100644 --- a/src/layouts/home-assistant-main.js +++ b/src/entry-points/home-assistant-main.js @@ -7,7 +7,7 @@ import '../managers/notification-manager'; import '../dialogs/more-info-dialog'; import '../dialogs/ha-voice-command-dialog'; -export default new Polymer({ +Polymer({ is: 'home-assistant-main', behaviors: [window.hassBehavior], diff --git a/src/layouts/login-form.html b/src/entry-points/login-form.html similarity index 100% rename from src/layouts/login-form.html rename to src/entry-points/login-form.html diff --git a/src/home-assistant.html b/src/home-assistant.html index 3df52b5d94..2a9277b74d 100644 --- a/src/home-assistant.html +++ b/src/home-assistant.html @@ -1,3 +1,5 @@ + + @@ -6,8 +8,8 @@ - - + + @@ -21,16 +23,14 @@ diff --git a/src/home-assistant.js b/src/home-assistant.js deleted file mode 100644 index 88e25fbff5..0000000000 --- a/src/home-assistant.js +++ /dev/null @@ -1,5 +0,0 @@ -import moment from 'moment'; - -import './layouts/home-assistant-main'; - -window.moment = moment; diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 77ae8a6e56..0000000000 --- a/webpack.config.js +++ /dev/null @@ -1,35 +0,0 @@ -var path = require('path'); -var webpack = require('webpack'); - -var definePlugin = new webpack.DefinePlugin({ - __DEV__: JSON.stringify(JSON.parse(process.env.BUILD_DEV || 'true')), - __DEMO__: JSON.stringify(JSON.parse(process.env.BUILD_DEMO || 'false')), -}); - -module.exports = { - entry: { - _ui_compiled: './src/home-assistant.js', - _core_compiled: './src/entry-points/app-core.js', - _demo_data_compiled: './home-assistant-js/demo_data/expose_window.js', - }, - output: { - path: 'build', - filename: '[name].js', - }, - module: { - loaders: [ - { - loader: 'babel-loader', - test: /.js$/, - include: [ - path.resolve(__dirname, 'src'), - path.resolve(__dirname, 'home-assistant-js'), - ], - }, - ], - }, - plugins: [ - definePlugin, - new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /no-other-locales-for-now/), - ], -};