diff --git a/.gitignore b/.gitignore index cd965dae60d7fd314724f4bcbb56128e44db2ffe..c056e7ba1b78635a5d7f08e94ebb0f5d051f3c1e 100644 --- a/.gitignore +++ b/.gitignore @@ -10,5 +10,4 @@ npm-* /coverage # Build -/gui.js -/playground.js +/build diff --git a/Makefile b/Makefile index da69e5cd51facf1d65b48eb639fd856f453c12e2..b7f0ce59cb7a1afd11bec0a51085dd27c6c74de6 100644 --- a/Makefile +++ b/Makefile @@ -6,13 +6,18 @@ WEBPACK_DEV_SERVER=./node_modules/.bin/webpack-dev-server # ------------------------------------------------------------------------------ build: + @make clean $(WEBPACK) --bail +clean: + rm -rf ./build + mkdir -p build + watch: $(WEBPACK) --watch serve: - $(WEBPACK_DEV_SERVER) --port 8601 --config playground.config.js + $(WEBPACK_DEV_SERVER) --port 8601 --content-base=./build # ------------------------------------------------------------------------------ @@ -24,4 +29,4 @@ test: @make build $(WEBPACK) --bail --config playground.config.js -.PHONY: build watch serve lint +.PHONY: build clean watch serve lint test diff --git a/index.html b/index.html deleted file mode 100644 index 4abe36c7f2b0f441c01b85f9e335d1ed23419e45..0000000000000000000000000000000000000000 --- a/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <title>Scratch GUI Playground</title> - </head> - <body> - <div id="app"></div> - <script type="text/javascript" src="playground.js"></script> - </body> -</html> diff --git a/package.json b/package.json index be2cd7560a05d107692fa05bf12c62ff8f8290c4..90887ace22a10f5290d48a6d5596ed647a00fb3e 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "eslint": "3.5.0", "eslint-plugin-react": "6.2.1", "exports-loader": "0.6.3", + "html-webpack-plugin": "2.22.0", "imports-loader": "0.6.5", "json-loader": "0.5.4", "lodash.defaultsdeep": "4.4.0", diff --git a/playground.config.js b/playground.config.js deleted file mode 100644 index 9c7ecdfa7281520e32d2ddd8e4c95106c912156b..0000000000000000000000000000000000000000 --- a/playground.config.js +++ /dev/null @@ -1,6 +0,0 @@ -var config = require('./webpack.config'); -module.exports = Object.assign({}, config, { - entry: { - playground: './src/playground.js' - }, -}); diff --git a/src/index.js b/src/index.js index 93f125bec6ace087afd8467f17defde7fa9f10a0..0b5b9016fa8a6c0eac9a069d98c940de881c0295 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,8 @@ -module.exports = { - GUI: require('./components/gui'), - Blocks: require('./components/blocks') -}; +const React = require('react'); +const ReactDOM = require('react-dom'); +const GUI = require('./components/gui'); + +const app = document.createElement('div'); +document.body.appendChild(app); + +ReactDOM.render(<GUI />, app); diff --git a/src/playground.js b/src/playground.js deleted file mode 100644 index c129fda2f83db953bf6811fdce17b77047015fe1..0000000000000000000000000000000000000000 --- a/src/playground.js +++ /dev/null @@ -1,8 +0,0 @@ -const React = require('react'); -const ReactDOM = require('react-dom'); -const GUI = require('.').GUI; - -ReactDOM.render( - <GUI />, - document.getElementById('app') -); diff --git a/webpack.config.js b/webpack.config.js index 7f936fd56fcc3374e107eb33ed76354ee58ebae2..45f0fd4959dbb1c18d6710d387717c82afacba1e 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,14 +1,20 @@ var path = require('path'); +var HtmlWebpackPlugin = require('html-webpack-plugin'); +var webpack = require('webpack'); module.exports = { entry: { + vendor: ['react', 'react-dom'], gui: './src/index.js' }, output: { - library: 'ScratchGUI', - path: __dirname, + path: path.resolve(__dirname, 'build'), filename: '[name].js' }, module: { + externals: { + React: 'react', + ReactDOM: 'react-dom' + }, loaders: [{ test: /\.js$/, loader: 'babel-loader', @@ -29,5 +35,21 @@ module.exports = { test: require.resolve('scratch-blocks/blocks_compressed_vertical'), loader: 'imports?Blockly=scratch-blocks/blocks_compressed!exports?Blockly' }] - } + }, + plugins: [ + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor', + filename: 'vendor.min.js' + }), + new webpack.optimize.UglifyJsPlugin({ + include: /\.min\.js$/, + minimize: true, + compress: { + warnings: false + } + }), + new HtmlWebpackPlugin({ + title: 'Scratch 3.0 GUI' + }) + ] };