Skip to content

Instantly share code, notes, and snippets.

@sokra
Last active September 24, 2015 20:01
Show Gist options
  • Select an option

  • Save sokra/1be6f6f5eee72db39664 to your computer and use it in GitHub Desktop.

Select an option

Save sokra/1be6f6f5eee72db39664 to your computer and use it in GitHub Desktop.
bespoke + react + webpack
import React from "react";
import bespoke from "bespoke";
import "styles.css";
// use react components, markdown or plain html files in the slides folder
var slidesContext = require.context("./slides", true, /\.(js|md|html)$/);
// sort slides by name, name them like this: ./slides/3-section/7-slide.md
var slides = slidesContext.keys().sort().map((key) => slidesContext(key));
class App extends React.Component {
render() {
return <article>
{slides.map((slide) => {
if(typeof slide === "string") {
return <section dangerouslySetInnerHTML={{__html: slide}} />
} else {
return React.createElement(slide);
}
})}
</article>
}
}
var app = React.render(<App />, document.body);
var deck = bespoke.from("article", [
// ...
]);
module.exports = {
// ...
module: {
loaders: [
[
{ test: /\.css$/, loader: "style-loader!css-loader?modules", include: path.resolve(__dirname, "app") },
{ test: /\.css$/, loader: "style-loader!css-loader" }
],
{ test: /\.md$/, loader: "html-loader!markdown-loader" },
{ test: /\.html$/, loader: "html-loader" },
{ test: /\.js$/, loader: "babel-loader", include: path.resolve(__dirname, "app") },
{ test: /\.(png|jpg|woff2?)$/, loader: "file-loader" }
]
},
// ...
// useful plugins: html-webpack-plugin or static-render-webpack-plugin
// useful tools: gh-pages
}
# Welcome

![reference images relative to the slide](logo.png)

Slides can be markdown files, plain html files or full react components (for complex stuff).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment