diff --git a/package.json b/package.json index 283146b1..aa893e15 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ }, "devDependencies": { "babelify": "^7.3.0", + "babel-loader": "^6.4.1", "babel-preset-es2015": "^6.24.1", "babel-polyfill": "^6.23.0", "babel-plugin-transform-runtime": "^6.23.0", @@ -47,7 +48,8 @@ "hash.js": "^1.0.3", "jsdoc": "^3.4.3", "mocha": "^3.4.1", - "uglify-js": "^3.0.5" + "uglify-js": "^3.0.5", + "webpack": "^1.13.3" }, "main": "./lib/bcoin.js", "bin": { @@ -64,13 +66,14 @@ "uglify": "uglifyjs -m -o browser/bcoin.min.js browser/bcoin.js && uglifyjs -m -o browser/bcoin-master.min.js browser/bcoin-master.js", "clean": "rm browser/bcoin.js browser/bcoin.min.js browser/bcoin-master.js browser/bcoin-master.min.js", "lint": "eslint lib/ test/ migrate/ examples/ bench/ bin/cli bin/node bin/spvnode || exit 0", - "docs": "jsdoc -c jsdoc.json" + "docs": "jsdoc -c jsdoc.json", + "webpack": "./node_modules/webpack/bin/webpack.js" }, "browser": { - "./lib/blockchain/layout": "./lib/blockchain/layout-browser.js", - "./lib/crypto/backend": "./lib/crypto/backend-browser.js", - "./lib/crypto/ec": "./lib/crypto/ec-elliptic.js", - "./lib/crypto/pk": "./lib/crypto/pk-browser.js", + "./lib/blockchain/layout.js": "./lib/blockchain/layout-browser.js", + "./lib/crypto/backend.js": "./lib/crypto/backend-browser.js", + "./lib/crypto/ec.js": "./lib/crypto/ec-elliptic.js", + "./lib/crypto/pk.js": "./lib/crypto/pk-browser.js", "./lib/db/backends.js": "./lib/db/backends-browser.js", "./lib/env.js": "./lib/env-browser.js", "./lib/hd/wordlist": "./lib/hd/wordlist-browser.js", @@ -96,15 +99,18 @@ "bcoin-native": "./browser/empty.js", "child_process": "./browser/empty.js", "crypto": "./browser/empty.js", - "ec":"./lib/crypto/ec-elliptic.js", "dgram": "./browser/empty.js", "dns": "./browser/empty.js", + "ec": "./lib/crypto/ec-elliptic.js", "fs": "./browser/empty.js", "net": "./browser/empty.js", "os": "./browser/empty.js", - "secp256k1": "./browser/empty.js" + "secp256k1": "./browser/empty.js", + "socket.io": "./browser/empty.js" }, "browserify": { - "transform": ["babelify"] + "transform": [ + "babelify" + ] } } diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 00000000..5b936508 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,39 @@ +const webpack = require('webpack') +const PATHS = { + bcoin: './lib/bcoin', + master: './lib/workers/master' +} +module.exports = { + entry: { + 'bcoin': PATHS.bcoin, + 'bcoin.min': PATHS.bcoin, + 'bcoin-master': PATHS.master, + 'bcoin-master.min': PATHS.master + }, + output: { + path: './browser', + filename: '[name].js' + }, + resolve: { + extensions: ['', '.js', '.json'], + packageAlias: 'browser' + }, + module: { + loaders: [ + { test: /\.js$/, loader: 'babel', exclude: /node_modules/ }, + { test: /\.json$/, loader: 'json' } + ] + }, + node: { + fs: 'empty' + }, + plugins: [ + new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: false + }, + include: /\.min\.js$/, + minimize: true + }) + ] +}