diff --git a/webpack.config.js b/webpack.config.js index 929e57d71b..089f3fdf1b 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,6 +1,8 @@ var path = require('path'); var webpack = require('webpack'); +var olm_path = path.resolve('./node_modules/olm'); + module.exports = { module: { preLoaders: [ @@ -29,15 +31,36 @@ module.exports = { // alias any requires to the react module to the one in our path, otherwise // we tend to get the react source included twice when using npm link. react: path.resolve('./node_modules/react'), + + // matrix-js-sdk will use olm if it is available, + // but does not explicitly depend on it. Pull it + // in from node_modules if it's there. + olm: olm_path, }, }, plugins: [ - new webpack.IgnorePlugin(/^olm/), new webpack.DefinePlugin({ 'process.env': { NODE_ENV: JSON.stringify(process.env.NODE_ENV) } - }) + }), + + // olm.js includes "require 'fs'", which is never + // executed in the browser. Ignore it. + new webpack.IgnorePlugin(/^fs$/, /node_modules\/olm$/) ], devtool: 'source-map' }; + +// ignore olm.js if it's not installed. +(function() { + var fs = require('fs'); + try { + fs.lstatSync(olm_path); + console.log("Olm is installed; including it in bundle"); + } catch (e) { + module.exports.plugins.push( + new webpack.IgnorePlugin(/^olm$/) + ); + } +}) ();