commit 373e6f0699d314f692d3039586cb9e42e0f2a876 Author: Drew DeVault Date: Sun Aug 6 18:23:54 2017 -0400 Initial commit diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..1d3efd4 --- /dev/null +++ b/.babelrc @@ -0,0 +1,4 @@ +{ + "plugins": ["transform-react-jsx"], + "presets": ["env"] +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..91a3983 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +dist +node_modules +package-lock.json diff --git a/index.html b/index.html new file mode 100644 index 0000000..5ef53ec --- /dev/null +++ b/index.html @@ -0,0 +1,10 @@ + + + + receptor + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..c061001 --- /dev/null +++ b/package.json @@ -0,0 +1,39 @@ +{ + "name": "receptor", + "version": "1.0.0", + "description": "Web client for synapse", + "main": "index.js", + "scripts": { + "build": "webpack", + "build:production": "webpack -p", + "watch": "webpack --progress --watch", + "start": "node serve.js" + }, + "repository": { + "type": "git", + "url": "https://git.sr.ht/~sircmpwn/receptor" + }, + "author": "Drew DeVault ", + "license": "BSD-3-Clause", + "devDependencies": { + "babel-core": "^6.25.0", + "babel-loader": "^7.1.1", + "babel-preset-env": "^1.6.0", + "css-loader": "^0.28.4", + "react": "^15.6.1", + "react-dom": "^15.6.1", + "react-redux": "^5.0.5", + "redux": "^3.7.2", + "style-loader": "^0.18.2", + "webpack": "^3.1.0", + "webpack-dev-middleware": "^1.12.0", + "webpack-hot-middleware": "^2.18.2" + }, + "dependencies": { + "babel-plugin-transform-react-jsx": "^6.24.1", + "bootstrap": "^4.0.0-alpha.6", + "express": "^4.15.3", + "node-sass": "^4.5.3", + "sass-loader": "^6.0.6" + } +} diff --git a/scss/base.scss b/scss/base.scss new file mode 100644 index 0000000..cbd46a7 --- /dev/null +++ b/scss/base.scss @@ -0,0 +1 @@ +@import "bootstrap"; diff --git a/serve.js b/serve.js new file mode 100644 index 0000000..3381a01 --- /dev/null +++ b/serve.js @@ -0,0 +1,30 @@ +var path = require('path'); +var process = require('process'); +var express = require('express'); +var webpack = require('webpack'); +var config = require('./webpack.config'); +var mime = require('mime'); + +var app = express(); +var compiler = webpack(config); + +app.use(require('webpack-dev-middleware')(compiler, { + noInfo: true, + publicPath: config.output.publicPath +})); + +app.use(require('webpack-hot-middleware')(compiler)); + +app.get('*', function(req, res) { + res.sendFile(path.join(__dirname, req.path)); +}); + +var port = process.env.MANAGER_PORT || 3000; + +app.listen(port, 'localhost', function(err) { + if (err) { + console.log(err); + return; + } + console.log('Listening at http://localhost:' + port); +}); diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..0e72864 --- /dev/null +++ b/src/index.js @@ -0,0 +1,8 @@ +import React from 'react'; +import { render } from 'react-dom'; +import scss from '../scss/base.scss'; + +render( +

Hello world!

, + document.getElementById('root') +); diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..6e149d7 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,42 @@ +const path = require("path"); +const webpack = require("webpack"); + +const defines = { + "DEFAULT_WS_URI": process.env.WEBSOCKET_URI || "ws://localhost:8412/" +}; + +module.exports = { + devtool: "source-map", + entry: [ + "webpack-hot-middleware/client", + "./src/index.js" + ], + output: { + filename: "bundle.js", + path: path.resolve(__dirname, "dist"), + publicPath: "/dist/" + }, + module: { + rules: [ + { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }, + { test: /\.scss$/, + use: [ + 'style-loader', + 'css-loader', + { + loader: 'sass-loader', + options: { + includePaths: [ + path.resolve(__dirname, './node_modules/bootstrap/scss/') + ] + } + } + ], + } + ] + }, + plugins:[ + new webpack.HotModuleReplacementPlugin(), + new webpack.EnvironmentPlugin(defines) + ] +};