const path = require('path'); const webpack = require('webpack'); const MomentLocalesPlugin = require('moment-locales-webpack-plugin'); const pluginArray = []; const sourceMapType = 'source-map'; const MomentTimezoneDataPlugin = require('moment-timezone-data-webpack-plugin'); /* if (process.env.NODE_ENV === 'development') { console.log('Development environment detected, enabling Bundle Analyzer'); const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; pluginArray.push(new BundleAnalyzerPlugin({ // Can be `server`, `static` or `disabled`. // In `server` mode analyzer will start HTTP server to show bundle report. // In `static` mode single HTML file with bundle report will be generated. // In `disabled` mode you can use this plugin to just generate Webpack Stats JSON file by setting // `generateStatsFile` to `true`. analyzerMode: 'static', // Host that will be used in `server` mode to start HTTP server. analyzerHost: '127.0.0.1', // Port that will be used in `server` mode to start HTTP server. analyzerPort: 8888, // Path to bundle report file that will be generated in `static` mode. // Relative to bundles output directory. reportFilename: 'bundle_report.html', // Module sizes to show in report by default. // Should be one of `stat`, `parsed` or `gzip`. // See "Definitions" section for more information. defaultSizes: 'parsed', // Automatically open report in default browser openAnalyzer: true, // If `true`, Webpack Stats JSON file will be generated in bundles output directory generateStatsFile: false, // Name of Webpack Stats JSON file that will be generated if `generateStatsFile` is `true`. // Relative to bundles output directory. statsFilename: 'stats.json', // Options for `stats.toJson()` method. // For example you can exclude sources of your modules from stats file with `source: false` option. // See more options here: https://github.com/webpack/webpack/blob/webpack-1/lib/Stats.js#L21 statsOptions: null, // Log level. Can be 'info', 'warn', 'error' or 'silent'. logLevel: 'info' })); } */ pluginArray.push(new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery', 'window.jQuery': 'jquery', 'window.$': 'jquery' })); pluginArray.push(new webpack.ProvidePlugin({ process: 'process/browser', })); // limit Timezone data from Moment pluginArray.push(new MomentTimezoneDataPlugin({ startYear: 2010, endYear: new Date().getFullYear() + 10, })); // Strip all locales except the ones defined in lib/language.js // (“en” is built into Moment and can’t be removed, 'dk' is not defined in moment) pluginArray.push(new MomentLocalesPlugin({ localesToKeep: ['bg', 'cs', 'de', 'el', 'es', 'fi', 'fr', 'he', 'hr', 'it', 'ko', 'nb', 'nl', 'pl', 'pt', 'ro', 'ru', 'sk', 'sv', 'zh_cn', 'zh_tw' ], })); if (process.env.NODE_ENV === 'development') { const ESLintPlugin = require('eslint-webpack-plugin'); pluginArray.push(new ESLintPlugin({ emitWarning: true, failOnError: false, failOnWarning: false, formatter: require('eslint').CLIEngine.getFormatter('stylish'), overrideConfig: { globals: { '$': 'writeable' } } })); } const rules = [ { test: /\.(js|jsx)$/, use: { loader: 'babel-loader', options: { babelrc: true, cacheDirectory: true, extends: path.join(__dirname + '/.babelrc') } } }, { test: /\.css$/i, use: [ 'style-loader', { loader: 'css-loader', options: { sourceMap: true, }, } ], exclude: /node_modules/ }, { test: /\.(jpe?g|png|gif)$/i, loader: 'file-loader', options: { outputPath: 'images' //the images will be emmited to public/assets/images/ folder //the images will be put in the DOM