| const path = require('path'); |
| const webpack = require('webpack'); |
| |
| // Builds web module. Only really used in example code / static site. |
| module.exports = (env, argv) => ({ |
| entry: { |
| 'react-draggable.min': './lib/cjs.js', |
| }, |
| output: { |
| filename: '[name].js', |
| sourceMapFilename: '[name].js.map', |
| devtoolModuleFilenameTemplate: '../[resource-path]', |
| library: 'ReactDraggable', |
| libraryTarget: 'umd', |
| path: path.resolve(__dirname, 'build', 'web'), |
| }, |
| devServer: { |
| hot: true, |
| open: 'example/index.html', |
| client: { |
| overlay: true, |
| }, |
| devMiddleware: { |
| // disableHostCheck: true, |
| writeToDisk: true, |
| }, |
| static: { |
| directory: '.', |
| } |
| }, |
| devtool: 'source-map', |
| externals: { |
| 'react': { |
| 'commonjs': 'react', |
| 'commonjs2': 'react', |
| 'amd': 'react', |
| // React dep should be available as window.React, not window.react |
| 'root': 'React' |
| }, |
| 'react-dom': { |
| 'commonjs': 'react-dom', |
| 'commonjs2': 'react-dom', |
| 'amd': 'react-dom', |
| 'root': 'ReactDOM' |
| } |
| }, |
| module: { |
| rules: [ |
| { |
| test: /\.(?:js|es).?$/, |
| loader: 'babel-loader', |
| options: { |
| cacheDirectory: false, // intended, have had bugs with env like DRAGGABLE_DEBUG in the past |
| }, |
| exclude: /(node_modules)/ |
| } |
| ] |
| }, |
| plugins: [ |
| new webpack.EnvironmentPlugin({ |
| // these are default values |
| DRAGGABLE_DEBUG: false, |
| NODE_ENV: ['development', 'production'].includes(argv.mode) ? argv.mode : 'production' |
| }), |
| // Scope hoisting |
| new webpack.optimize.ModuleConcatenationPlugin(), |
| ], |
| optimization: { |
| minimize: false, |
| }, |
| stats: { |
| errorDetails: true, |
| } |
| }); |