const ExtractTextPlugin = require('extract-text-webpack-plugin'); const webpack = require('webpack'); const path = require('path'); const plugins = { 'no-errors-plugin': new webpack.NoErrorsPlugin(), 'extract-text-plugin': new ExtractTextPlugin({ filename: '[name].css', allChunks: true }), 'loader-options-plugin': new webpack.LoaderOptionsPlugin({ options: { postcss: { plugins: [ require('postcss-import')(), require('postcss-at-rules-variables')(), require('postcss-modules-values'), require('postcss-functions')({ functions: { remCalc: function(values) { values = values.replace('px', ''); values = values.split(' '); let outputRems = ''; const base = 16; values.forEach( (value, i) => { const remValue = value / base; outputRems += i === 0 ? `${remValue}rem` : ` ${remValue}rem`; }); return outputRems; } }, }), require('postcss-mixins')(), require('postcss-for'), require('postcss-cssnext')() ] }, 'embed-markdown-loader': {} } }) }; exports.config = { context: path.join(__dirname, '../'), output: { path: path.join(__dirname, '../static'), publicPath: '/static/', filename: '[name].js' }, plugins: [ plugins['no-errors-plugin'], plugins['extract-text-plugin'], plugins['loader-options-plugin'] ], resolveLoader: { alias: { 'embed-markdown-loader': path.join(__dirname, './embed-markdown-loader') } }, module: { loaders: [{ test: /js?$/, exclude: /node_modules/, include: [ path.join(__dirname, '../src'), path.join(__dirname, '../docs') ], loader: 'babel' }, { test: /\.json?$/, exclude: /node_modules/, include: [ path.join(__dirname, '../src'), path.join(__dirname, '../docs') ], loader: 'json' }, { test: /\.md?$/, exclude: /node_modules/, include: [ path.join(__dirname, '../src'), path.join(__dirname, '../docs') ], loader: 'raw-loader!embed-markdown-loader' }, { test: /\.css?$/, exclude: /node_modules/, include: [ path.join(__dirname, '../src'), path.join(__dirname, '../docs') ], loader: ExtractTextPlugin.extract({ fallbackLoader: 'style-loader', loader: [ 'css-loader?', 'modules&importLoaders=1&', 'localIdentName=[name]__[local]___[hash:base64:5]!', 'postcss-loader' ].join('') }) }] } }; exports.plugins = plugins;