From a85fc9163002d623e29fbb1e62c8ad3f23c44646 Mon Sep 17 00:00:00 2001 From: Crawl Date: Tue, 22 Aug 2017 19:57:59 +0200 Subject: [PATCH] make webpack over 9000 times better (#1816) * webpack stuff * even better * Update browser.js --- browser.js | 9 +++++++++ src/client/Client.js | 5 ++--- src/client/websocket/WebSocketConnection.js | 2 +- src/index.js | 2 -- webpack.config.js | 7 ++++++- 5 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 browser.js diff --git a/browser.js b/browser.js new file mode 100644 index 000000000..9f9341efc --- /dev/null +++ b/browser.js @@ -0,0 +1,9 @@ +const browser = typeof window !== 'undefined'; +const webpack = !!process.env.__DISCORD_WEBPACK__; + +const Discord = require('./'); + +module.exports = Discord; +if (browser && webpack) window.Discord = Discord; // eslint-disable-line no-undef +// eslint-disable-next-line no-console +else if (!browser) console.warn('Warning: Attempting to use browser version of Discord.js in a non-browser environment!'); diff --git a/src/client/Client.js b/src/client/Client.js index 97bbbdd96..54790ac7a 100644 --- a/src/client/Client.js +++ b/src/client/Client.js @@ -1,5 +1,4 @@ -const os = require('os'); -const EventEmitter = require('events').EventEmitter; +const EventEmitter = require('events'); const Constants = require('../util/Constants'); const Permissions = require('../util/Permissions'); const Util = require('../util/Util'); @@ -250,7 +249,7 @@ class Client extends EventEmitter { * @readonly */ get browser() { - return os.platform() === 'browser'; + return typeof window !== 'undefined'; } /** diff --git a/src/client/websocket/WebSocketConnection.js b/src/client/websocket/WebSocketConnection.js index 58878b3ea..c0581a208 100644 --- a/src/client/websocket/WebSocketConnection.js +++ b/src/client/websocket/WebSocketConnection.js @@ -1,4 +1,4 @@ -const browser = require('os').platform() === 'browser'; +const browser = typeof window !== 'undefined'; const EventEmitter = require('events'); const Constants = require('../../util/Constants'); const zlib = require('zlib'); diff --git a/src/index.js b/src/index.js index fb035c771..d2b38d14f 100644 --- a/src/index.js +++ b/src/index.js @@ -61,5 +61,3 @@ module.exports = { VoiceChannel: require('./structures/VoiceChannel'), Webhook: require('./structures/Webhook'), }; - -if (require('os').platform() === 'browser') window.Discord = module.exports; // eslint-disable-line no-undef diff --git a/webpack.config.js b/webpack.config.js index 55d0e12f6..db75a5e23 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -12,6 +12,11 @@ const createConfig = options => { const plugins = [ new webpack.DefinePlugin({ 'global.GENTLY': false }), new webpack.optimize.ModuleConcatenationPlugin(), + new webpack.DefinePlugin({ + 'process.env': { + __DISCORD_WEBPACK__: '"true"', + }, + }), ]; if (options.minify) plugins.push(new UglifyJSPlugin({ uglifyOptions: { output: { comments: false } } })); @@ -19,7 +24,7 @@ const createConfig = options => { const filename = `./webpack/discord${process.env.VERSIONED === 'false' ? '' : '.' + version}${options.minify ? '.min' : ''}.js`; // eslint-disable-line return { - entry: './src/index.js', + entry: './browser.js', output: { path: __dirname, filename,