UNPKG

compolicious

Version:
91 lines (86 loc) 2.36 kB
var path = require('path'); var webpack = require('webpack'); var flow = require('lodash/fp/flow'); var compact = require('lodash/fp/compact'); var uniq = require('lodash/fp/uniq'); var map = require('lodash/fp/map'); var CopyWebpackPlugin = require('copy-webpack-plugin'); var HtmlWebpackPlugin = require('html-webpack-plugin'); var HtmlWebpackIncludeAssetsPlugin = require('html-webpack-include-assets-plugin'); var babelRc = require('./.babelrc'); module.exports = function (options) { options = options || {}; return { entry: { bundle: [ 'webpack-dev-server/client', 'webpack/hot/dev-server', options.mainEntry ] }, output: { filename: '[name].[hash].js', sourceMapFilename: '[name].[hash].js.map', path: path.resolve(__dirname, 'lib'), publicPath: '/' }, resolve: { extensions: ['.js', '.jsx'], alias: { '/src': path.resolve(__dirname, 'src') } }, module: { rules: [{ test: /\.(ttf|eot|woff|woff2)$/, use: { loader: "file-loader", options: { name: "fonts/[name].[ext]" } } }, { test: /\.css\.js$/, loader: ['style-loader', 'css-loader?modules', 'css-js-loader', 'value-loader'] }, { test: /\.css$/, loader: ['style-loader', 'css-loader'] }, { test: /\.jsx?$/, exclude: /node_modules/, use: { loader: 'babel-loader', options: babelRc } }] }, plugins: [ new webpack.HotModuleReplacementPlugin(), new CopyWebpackPlugin(flow([ function (assets) { return assets.concat(map(function (asset) { if (asset.toServer) { return { from: asset.from, to: path.resolve(__dirname, 'lib' + asset.toServer) }; } else { return asset; } })(options.copyAssets || [])); }, compact, uniq ])([{ from: 'node_modules/@babel/standalone/babel.min.js' }])), new HtmlWebpackPlugin({ template: path.resolve(__dirname, 'src', 'index.html') }), new HtmlWebpackIncludeAssetsPlugin({ assets: ['babel.min.js'], append: true }) ] }; }