| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- const path = require('path');
- const HtmlWebpackPlugin = require('html-webpack-plugin');
- const CleanWebpackPlugin = require("clean-webpack-plugin");
- const ExtractTextPlugin = require('extract-text-webpack-plugin');
- const autoprefixer = require('autoprefixer');
- const outputDirectory = "build";
- module.exports = {
- entry: './src/index.js',
- output: {
- library: 'Branding',
- path: path.resolve(__dirname, outputDirectory),
- filename: 'index.js',
- },
- devtool: 'source-map',
- module: {
- rules: [
- {
- test: /\.jsx?$/,
- exclude: /node_modules/,
- use: [
- {
- loader: 'babel-loader',
- options: {
- presets: ['react']
- }
- }
- ]
- },
- {
- test: /\.(sa|sc|c)ss$/,
- use: ExtractTextPlugin.extract({
- fallback: 'style-loader',
- use: [
- {
- loader: "css-loader",
- options: {
- sourceMap: true
- }
- },
- {
- loader: 'postcss-loader',
- options: {
- plugins: [
- autoprefixer({
- Browserslist: [
- '>1%',
- 'last 4 versions',
- 'Firefox ESR',
- 'not ie < 9', // React doesn't support IE8 anyway
- ]
- })
- ],
- sourceMap: true
- }
- },
- {
- loader: "sass-loader",
- options: {
- sourceMap: true
- }
- }
- ]
- })
- },
- {
- test: /\.(cur|ico|jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2)(\?.*)?$/,
- use: {
- loader: 'file-loader',
- query: {
- name: '[name].[hash:8].[ext]',
- outputPath: './assets/media/',
- publicPath: '/'
- }
- }
- },
- {
- test: /\.(mp4|webm|wav|mp3|m4a|aac|oga)(\?.*)?$/,
- use: {
- loader: 'url-loader',
- query: {
- limit: 10000,
- name: '[name].[hash:8].[ext]',
- outputPath: './assets/media/',
- publicPath: '/'
- }
- }
- }
- ]
- },
- plugins: [
- new CleanWebpackPlugin([outputDirectory]),
- new ExtractTextPlugin({
- filename: 'assets/css/[name].[contenthash:8].css'
- }),
- ]
- };
|