diff --git a/client/coral-admin/.gitignore b/client/coral-admin/.gitignore
deleted file mode 100644
index 707c890e5..000000000
--- a/client/coral-admin/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-node_modules
-public/bundle.js
-public/embed/comment-stream
-.DS_Store
-npm-debug.log
-yarn.lock
diff --git a/client/coral-admin/config.json b/client/coral-admin/config.json
index c8f318cfc..156740de5 100644
--- a/client/coral-admin/config.json
+++ b/client/coral-admin/config.json
@@ -1,5 +1,3 @@
{
- "basePath": "admin",
- "talkHost": "http://localhost:16180",
- "xeniaHost": "http://localhost:16180"
+ "basePath": "admin"
}
diff --git a/client/coral-admin/package.json b/client/coral-admin/package.json
deleted file mode 100644
index 048359526..000000000
--- a/client/coral-admin/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "coral-admin",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "build": "./node_modules/.bin/webpack --config webpack.config.js",
- "start": "./node_modules/.bin/webpack-dev-server --config webpack.config.dev.js --inline --hot --content-base public --port 3142"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "hammerjs": "2.0.8",
- "immutable": "3.8.1",
- "keymaster": "1.6.2",
- "material-design-lite": "1.2.1",
- "react": "^15.3.2",
- "react-dom": "^15.3.2",
- "react-mdl": "^1.7.2",
- "react-redux": "^4.4.5",
- "react-router": "^3.0.0",
- "redux": "3.6.0",
- "redux-thunk": "2.1.0",
- "timeago.js": "2.0.2"
- },
- "devDependencies": {
- "autoprefixer": "6.5.0",
- "babel-core": "^6.18.2",
- "babel-loader": "^6.2.7",
- "copy-webpack-plugin": "3.0.1",
- "css-loader": "0.25.0",
- "json-loader": "0.5.4",
- "postcss-loader": "0.13.0",
- "postcss-modules": "0.5.2",
- "precss": "1.4.0",
- "standard": "8.2.0",
- "style-loader": "0.13.1",
- "webpack": "^1.13.3",
- "webpack-dev-server": "1.16.1"
- }
-}
diff --git a/client/coral-admin/postcss.config.js b/client/coral-admin/postcss.config.js
deleted file mode 100644
index d5267160a..000000000
--- a/client/coral-admin/postcss.config.js
+++ /dev/null
@@ -1,7 +0,0 @@
-module.exports = {
- plugins: [
- require('postcss-smart-import')({ /* ...options */ }),
- require('precss')({ /* ...options */ }),
- require('autoprefixer')({ /* ...options */ })
- ]
-}
diff --git a/client/coral-admin/public/index.html b/client/coral-admin/public/index.html
deleted file mode 100644
index ef1adffec..000000000
--- a/client/coral-admin/public/index.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- Talk - Coral Admin
-
-
-
-
-
-
-
-
-
diff --git a/client/coral-admin/webpack.config.dev.js b/client/coral-admin/webpack.config.dev.js
deleted file mode 100644
index e4d771e72..000000000
--- a/client/coral-admin/webpack.config.dev.js
+++ /dev/null
@@ -1,32 +0,0 @@
-const path = require('path')
-const autoprefixer = require('autoprefixer')
-const precss = require('precss')
-
-module.exports = {
- entry: {
- 'bundle': path.join(__dirname, 'src', 'index')
- },
- output: {
- path: path.join(__dirname, '..', '..', 'dist', 'coral-admin'),
- filename: '[name].js'
- },
- module: {
- loaders: [
- { test: /.js$/, loader: 'babel', include: path.join(__dirname, 'src'), exclude: /node_modules/ },
- { test: /\.json$/, loaders: 'json', include: __dirname, exclude: /node_modules/ },
- { test: /.css$/, loaders: ['style-loader', 'css-loader?modules&localIdentName=[name]__[local]___[hash:base64:5]', 'postcss-loader'] }
- ]
- },
- plugins: [ autoprefixer, precss ],
- resolve: {
- root: [
- path.resolve('./src'),
- path.resolve('../')
- ]
- },
- devServer: {
- historyApiFallback: {
- index: '/'
- }
- }
-}
diff --git a/client/coral-admin/webpack.config.js b/client/coral-admin/webpack.config.js
deleted file mode 100644
index 0cceded4b..000000000
--- a/client/coral-admin/webpack.config.js
+++ /dev/null
@@ -1,19 +0,0 @@
-const path = require('path')
-const devConfig = require('./webpack.config.dev')
-const autoprefixer = require('autoprefixer')
-const precss = require('precss')
-const Copy = require('copy-webpack-plugin')
-
-module.exports = Object.assign({}, devConfig, {
- module: {
- context: __dirname,
- loaders: [
- { test: /.js$/, loader: 'babel', include: [path.join(__dirname, 'src'), path.join(__dirname, '../', 'coral-framework')], exclude: /node_modules/ },
- { test: /.json$/, loader: 'json', include: __dirname, exclude: /node_modules/ },
- { test: /.css$/, loaders: ['style-loader', 'css-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]', 'postcss-loader'] }
- ]
- },
- plugins: [
- autoprefixer, precss
- ]
-})
diff --git a/client/coral-embed-stream/.gitignore b/client/coral-embed-stream/.gitignore
deleted file mode 100644
index e69de29bb..000000000
diff --git a/client/coral-embed-stream/dev-server.js b/client/coral-embed-stream/dev-server.js
deleted file mode 100644
index 926033fda..000000000
--- a/client/coral-embed-stream/dev-server.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var path = require('path')
-var express = require('express')
-var http = require('http')
-var webpack = require('webpack')
-var config = require('./webpack.config.dev')
-var Dashboard = require('webpack-dashboard')
-var DashboardPlugin = require('webpack-dashboard/plugin')
-
-var app = express()
-var server = http.Server(app)
-
-var compiler = webpack(config)
-var dashboard = new Dashboard()
-compiler.apply(new DashboardPlugin(dashboard.setData))
-
-app.use(express.static('public'))
-
-app.use(require('webpack-dev-middleware')(compiler, {
- noInfo: true,
- quiet: true,
- publicPath: config.output.publicPath
-}))
-
-app.use(require('webpack-hot-middleware')(compiler, {log: () => {}}))
-
-app.get('/default.css', function (req, res) {
- res.sendFile(path.join(__dirname, '/style/default.css'))
-})
-
-app.get('*', function (req, res) {
- res.sendFile(path.join(__dirname, 'index.html'))
-})
-
-server.listen(6182, 'localhost', function (err) {
- if (err) {
- console.log(err)
- return
- }
-
- console.log('Listening at http://localhost:6182')
-})
diff --git a/client/coral-embed-stream/index.html b/client/coral-embed-stream/index.html
deleted file mode 100644
index 6e15cba9f..000000000
--- a/client/coral-embed-stream/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/client/coral-embed-stream/src/app.js b/client/coral-embed-stream/src/index.js
similarity index 100%
rename from client/coral-embed-stream/src/app.js
rename to client/coral-embed-stream/src/index.js
diff --git a/client/coral-embed-stream/webpack.config.dev.js b/client/coral-embed-stream/webpack.config.dev.js
deleted file mode 100644
index dd5534529..000000000
--- a/client/coral-embed-stream/webpack.config.dev.js
+++ /dev/null
@@ -1,70 +0,0 @@
-var path = require('path')
-var webpack = require('webpack')
-const Copy = require('copy-webpack-plugin')
-
-module.exports = {
- devtool: 'eval',
- entry: [
- 'babel-polyfill',
- 'webpack-hot-middleware/client',
- path.join(__dirname, 'src', 'app')
- ],
- output: {
- path: path.join(__dirname, '..', '..','dist', 'coral-embed-stream'),
- filename: 'bundle.js',
- publicPath: '/'
- },
- resolve: {
- root: [
- path.resolve(__dirname, 'src'),
- path.resolve(__dirname, '..')
- ],
- extensions: ['', '.js', '.jsx']
- },
- plugins: [
- new Copy([{
- from: path.join(__dirname, 'index.html')
- },
- {
- from: path.join(__dirname, 'style', 'default.css')
- },
- {
- from: path.join(__dirname, 'public'),
- to: './'
- }]),
- new webpack.DefinePlugin({
- 'process.env': {
- 'NODE_ENV': JSON.stringify('development')
- }
- }),
- new webpack.HotModuleReplacementPlugin(),
- new webpack.ProvidePlugin({
- 'fetch': 'imports?this=>global!exports?global.fetch!whatwg-fetch'
- }),
- new webpack.NoErrorsPlugin()
- ],
- module: {
- loaders: [{
- test: /\.(js|jsx)$/,
-
- loaders: ['babel'],
- exclude: /node_modules/,
- include: path.join(__dirname, '../')
- }, {
- test: /\.css$/,
- loader: 'style-loader!css-loader'
- }, {
- test: /\.png$/,
- loader: 'url-loader?limit=100000'
- }, {
- test: /\.(jpg|png|gif|svg)$/,
- loader: 'file-loader'
- }, {
- test: /\.json$/,
- loader: 'json-loader'
- }, {
- test: /\.woff$/,
- loader: 'url?limit=100000'
- }]
- }
-}
diff --git a/client/coral-embed-stream/webpack.config.js b/client/coral-embed-stream/webpack.config.js
deleted file mode 100644
index 2db94e6af..000000000
--- a/client/coral-embed-stream/webpack.config.js
+++ /dev/null
@@ -1,73 +0,0 @@
-const path = require('path')
-const webpack = require('webpack')
-const Copy = require('copy-webpack-plugin')
-
-//Keeping this file for reference, it should move to a global webpack.
-
-module.exports = {
- devtool: 'source-map',
- entry: [
- 'babel-polyfill',
- path.join(__dirname, 'src', 'app')
- ],
- output: {
- path: path.join(__dirname, '..', '..','dist', 'coral-embed-stream'),
- filename: 'bundle.js',
- publicPath: '/dist/'
- },
- resolve: {
- root: [
- path.resolve(__dirname, 'src')
- ],
- extensions: ['', '.js', '.jsx']
- },
- plugins: [
- new Copy([{
- from: path.join(__dirname, 'index.html')
- },
- {
- from: path.join(__dirname, 'style', 'default.css')
- },
- {
- from: path.join(__dirname, 'public'),
- to: './'
- },
- {
- from: path.resolve(__dirname, '..', 'coral-framework', 'i18n', 'translations'),
- to: './translations'
- }]),
- new webpack.optimize.OccurenceOrderPlugin(),
- new webpack.DefinePlugin({
- 'process.env': {
- 'NODE_ENV': JSON.stringify('production')
- }
- }),
- new webpack.ProvidePlugin({
- 'fetch': 'imports?this=>global!exports?global.fetch!whatwg-fetch'
- }),
- new webpack.ExtendedAPIPlugin()
- ],
- module: {
- loaders: [{
- test: /\.(js|jsx)$/,
- loaders: ['babel'],
- exclude: /node_modules/,
- include: path.join(__dirname, '../')
- }, {
- test: /\.css$/,
- loader: 'style-loader!css-loader'
- }, {
- test: /\.png$/,
- loader: 'url-loader?limit=100000'
- }, {
- test: /\.jpg$/,
- loader: 'file-loader'
- }, {
- test: /\.json$/,
- loader: 'json-loader'
- }, {
- test: /\.woff$/,
- loader: 'url?limit=100000'
- }]
- }
-}
diff --git a/dist/coral-admin/index.html b/dist/coral-admin/index.html
deleted file mode 100644
index 3be58a0c8..000000000
--- a/dist/coral-admin/index.html
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
- Talk - Coral Admin
-
-
-
-
-
-
-
-
-
-
diff --git a/dist/coral-admin/manifest.json b/dist/coral-admin/manifest.json
deleted file mode 100644
index 5da846121..000000000
--- a/dist/coral-admin/manifest.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "short_name": "Talk",
- "name": "Talk",
- "icons": [
- {
- "src": "https://coralproject.net/images/icon-coral-white.svg",
- "sizes": "150x150"
- }
- ],
- "start_url": "./",
- "display": "standalone"
-}
diff --git a/package.json b/package.json
index dd22a5f8c..02bd7bbe7 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,8 @@
"main": "app.js",
"scripts": {
"start": "./bin/www",
- "build": "./node_modules/webpack/bin/webpack.js --config ./client/coral-embed-stream/webpack.config.js && cd client/coral-admin && npm install && npm run build",
+ "build": "webpack --config webpack.config.js --bail",
+ "build-watch": "webpack --config webpack.config.dev.js --watch",
"lint": "eslint .",
"pretest": "npm install",
"test": "mocha tests --recursive",
@@ -53,9 +54,9 @@
},
"devDependencies": {
"autoprefixer": "6.5.0",
- "babel-core": "6.14.0",
+ "babel-core": "^6.14.0",
"babel-jest": "^15.0.0",
- "babel-loader": "6.2.5",
+ "babel-loader": "^6.2.5",
"babel-plugin-transform-async-to-generator": "^6.8.0",
"babel-plugin-transform-decorators-legacy": "^1.3.4",
"babel-plugin-transform-object-assign": "^6.8.0",
@@ -67,26 +68,31 @@
"chai": "^3.5.0",
"chai-http": "^3.0.0",
"copy-webpack-plugin": "^3.0.1",
- "css-loader": "0.25.0",
+ "css-loader": "^0.25.0",
"eslint": "^3.9.1",
"exports-loader": "^0.6.3",
+ "hammerjs": "^2.0.8",
"immutable": "^3.8.1",
"imports-loader": "^0.6.5",
"json-loader": "^0.5.4",
+ "keymaster": "^1.6.2",
+ "material-design-lite": "^1.2.1",
"mocha": "^3.1.2",
"mocha-junit-reporter": "^1.12.1",
- "postcss-loader": "0.13.0",
+ "postcss-loader": "^0.13.0",
"postcss-modules": "0.5.2",
- "precss": "1.4.0",
"pre-git": "^3.10.0",
+ "precss": "^1.4.0",
"pym.js": "^1.1.1",
"react": "15.3.2",
"react-dom": "15.3.2",
+ "react-mdl": "^1.7.2",
"react-redux": "^4.4.5",
+ "react-router": "^3.0.0",
"redux": "^3.6.0",
"redux-thunk": "^2.1.0",
"regenerator": "^0.8.46",
- "style-loader": "0.13.1",
+ "style-loader": "^0.13.1",
"supertest": "^2.0.1",
"timeago.js": "^2.0.3",
"webpack": "^1.13.2",
diff --git a/webpack.config.dev.js b/webpack.config.dev.js
new file mode 100644
index 000000000..73662d409
--- /dev/null
+++ b/webpack.config.dev.js
@@ -0,0 +1,90 @@
+const path = require('path');
+const autoprefixer = require('autoprefixer');
+const precss = require('precss');
+const Copy = require('copy-webpack-plugin');
+const webpack = require('webpack');
+
+// Edit the build targets and embeds below.
+
+const buildTargets = [
+ 'coral-admin'
+];
+
+const buildEmbeds = [
+ 'stream'
+];
+
+module.exports = {
+ devtool: 'inline-source-map',
+ entry: buildTargets.reduce((entry, target) => {
+
+ // Add the entry for the bundle.
+ entry[`${target}/bundle`] = [
+ 'babel-polyfill',
+ path.join(__dirname, 'client/', target, '/src/index')
+ ];
+
+ return entry;
+ }, buildEmbeds.reduce((entry, embed) => {
+
+ // Add the entry for the bundle.
+ entry[`embed/${embed}/bundle`] = [
+ 'babel-polyfill',
+ path.join(__dirname, 'client/', `coral-embed-${embed}`, '/src/index')
+ ];
+
+ return entry;
+ }, {})),
+ output: {
+ path: path.join(__dirname, 'dist'),
+ filename: '[name].js'
+ },
+ module: {
+ loaders: [
+ {
+ loader: 'babel',
+ exclude: /node_modules/,
+ test: /\.js$/
+ },
+ {
+ loader: 'json',
+ test: /\.json$/,
+ exclude: /node_modules/
+ },
+ {
+ loaders: ['style-loader', 'css-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]', 'postcss-loader'],
+ test: /.css$/,
+ },
+ {
+ loader: 'url-loader?limit=100000',
+ test: /\.png$/
+ },
+ {
+ loader: 'file-loader',
+ test: /\.(jpg|png|gif|svg)$/
+ },
+ {
+ loader: 'url?limit=100000',
+ test: /\.woff$/
+ }
+ ]
+ },
+ plugins: [
+ new Copy(buildEmbeds.map(embed => ({
+ from: path.join(__dirname, 'client', `coral-embed-${embed}`, 'style'),
+ to: path.join(__dirname, 'dist', 'embed', embed)
+ }))),
+ autoprefixer,
+ precss,
+ new webpack.ProvidePlugin({
+ 'fetch': 'imports?this=>global!exports?global.fetch!whatwg-fetch'
+ })
+ ],
+ resolve: {
+ root: [
+ path.join(__dirname, 'client'),
+ ...buildTargets.map(target => path.join(__dirname, 'client', target, 'src')),
+ ...buildEmbeds.map(embed => path.join(__dirname, 'client', `coral-embed-${embed}`, 'src'))
+ ]
+ }
+};
diff --git a/webpack.config.js b/webpack.config.js
new file mode 100644
index 000000000..d28ca9d14
--- /dev/null
+++ b/webpack.config.js
@@ -0,0 +1,22 @@
+const webpack = require('webpack');
+const devConfig = require('./webpack.config.dev');
+
+// Disable source maps.
+devConfig.devtool = null;
+
+devConfig.plugins = devConfig.plugins.concat([
+ new webpack.DefinePlugin({
+ 'process.env': {
+ 'NODE_ENV': JSON.stringify('production')
+ }
+ }),
+ new webpack.optimize.UglifyJsPlugin({
+ compress: {
+ warnings: false
+ }
+ }),
+ new webpack.optimize.OccurrenceOrderPlugin(),
+ new webpack.optimize.DedupePlugin()
+]);
+
+module.exports = devConfig;