Advertisement
Guest User

Untitled

a guest
Feb 2nd, 2018
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JSON 4.44 KB | None | 0 0
  1. var webpack = require('webpack');
  2. var CopyWebpackPlugin = require('copy-webpack-plugin');
  3. var HtmlWebpackPlugin = require('html-webpack-plugin');
  4. var ExtractTextPlugin = require('extract-text-webpack-plugin');
  5. var path = require('path');
  6. var pkgBower = require('./package.json');
  7.  
  8. var baseHref = process.env.WP_BASE_HREF ? process.env.WP_BASE_HREF : '/';
  9.  
  10. module.exports = {
  11.  
  12.     entry: {
  13.         'vendor' : './app/Vendor.jsx',
  14.         'app'    : ['babel-polyfill', './app/App.jsx']
  15.     },
  16.  
  17.     resolve: {
  18.         modules: [path.join(__dirname, ''), 'node_modules', 'bower_components'],
  19.         extensions: ['.js', '.jsx'],
  20.         alias: {
  21.             moment$: 'moment/moment.js',
  22.             d3$: 'd3/d3.min.js'
  23.         }
  24.     },
  25.  
  26.     module: {
  27.         rules: [{
  28.                 test: /jquery\.flot\.resize\.js$/,
  29.                 use: 'imports-loader?this=>window'
  30.             }, {
  31.                 test: /\.js$/,
  32.                 use: 'imports-loader?define=>true',
  33.                 exclude: /node_modules\/(babel-polyfill|regenerator-runtime|core-js|babel-runtime)/
  34.             }, {
  35.                 test: /\.jsx?$/,
  36.                 exclude: /(node_modules|bower_components)/,
  37.                 use: 'react-hot-loader'
  38.             }, {
  39.                 test: /\.jsx?$/,
  40.                 exclude: /(node_modules|bower_components)/,
  41.                 use: {
  42.                     loader: 'babel-loader',
  43.                     query: {
  44.                         presets: ['es2015', 'react', 'stage-2'],
  45.                         compact: false
  46.                     }
  47.                 }
  48.             }, {
  49.                 test: /\.css$/,
  50.                 exclude: path.join(process.cwd(), '/app'),
  51.                 use: ExtractTextPlugin.extract({
  52.                     fallback: 'style-loader',
  53.                     use: {
  54.                         loader: 'css-loader',
  55.                         options: {
  56.                             sourceMap: true
  57.                         }
  58.                     }
  59.                 })
  60.             }, {
  61.                 test: /\.css$/,
  62.                 include: path.join(process.cwd(), '/app'),
  63.                 use: 'raw-loader'
  64.             }, {
  65.                 test: /\.woff|\.woff2|\.svg|.eot|\.ttf/,
  66.                 use: 'url-loader?prefix=font/&limit=10000'
  67.             }, {
  68.                 test: /\.(png|jpg|gif)$/,
  69.                 use: 'url-loader?limit=10000'
  70.             }, {
  71.                 test: /\.scss$/,
  72.                 use: [{
  73.                         loader: 'style-loader'
  74.                     }, {
  75.                         loader: 'css-loader'
  76.                     },/*{
  77.                         loader: 'rtlcss-loader' // uncomment for RTL
  78.                     },*/
  79.                     {
  80.                         loader: 'sass-loader',
  81.                         options: {
  82.                             outputStyle: 'expanded'
  83.                         }
  84.                     }
  85.                 ]
  86.             }]
  87.             // , noParse: [/\.min\.js/]
  88.     },
  89.  
  90.     resolveLoader: {
  91.         alias: {
  92.             'rtlcss-loader': path.join(__dirname, 'rtlcss-loader.js')
  93.         }
  94.     },
  95.  
  96.     plugins: [
  97.         new webpack.optimize.CommonsChunkPlugin({ name: 'vendor', filename: 'vendor[hash:6].js' }),
  98.         new HtmlWebpackPlugin({
  99.             template: 'app/index.html',
  100.             baseUrl: baseHref
  101.         }),
  102.         new CopyWebpackPlugin([{
  103.             from: 'img',
  104.             to: 'img',
  105.             context: path.join(__dirname, 'app')
  106.         }, {
  107.             from: 'server',
  108.             to: 'server',
  109.             context: path.join(__dirname, 'app')
  110.         }, {
  111.             from: 'webserver',
  112.             to: '',
  113.             context: path.join(__dirname, 'app')
  114.         }, {
  115.             from: 'fonts',
  116.             to: 'fonts',
  117.             context: path.join(__dirname, 'app')
  118.         }, {
  119.             from: 'settings.json',
  120.             to: '',
  121.             context: path.join(__dirname, 'app')
  122.         }]),
  123.         new webpack.ProvidePlugin({
  124.             $: 'jquery',
  125.             jQuery: 'jquery',
  126.             'window.jQuery': 'jquery',
  127.             'window.moment': 'moment',
  128.             'moment': 'moment'
  129.         }),
  130.         // https://github.com/moment/moment/issues/2979#issuecomment-189899510
  131.         new webpack.ContextReplacementPlugin(/\.\/locale$/, 'empty-module', false, /js$/),
  132.         new webpack.DefinePlugin({
  133.             WP_BASE_HREF: JSON.stringify(baseHref)
  134.         })
  135.     ]
  136. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement