Advertisement
Guest User

Untitled

a guest
Jan 19th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var path = require('path')
  2. var webpack = require('webpack')
  3.  
  4. var ExtractTextPlugin = require("extract-text-webpack-plugin")
  5.  
  6. var vueLoaderRule = {
  7.     test: /\.vue$/,
  8.     loader: 'vue-loader',
  9.     options: {
  10.     loaders: {
  11.         'less': 'vue-style-loader!css-loader!less-loader',
  12.     }          
  13.     }
  14. };
  15.  
  16. var vueLoaderRuleProd = Object.assign({}, vueLoaderRule, {
  17.     options: {
  18.     loaders: {
  19.         less: ExtractTextPlugin.extract({
  20.         loader: 'css-loader!less-loader',
  21.         fallbackLoader: 'vue-style-loader' // <- this is a dep of vue-loader, so no need to explicitly install if using npm3
  22.         }),
  23.         css: ExtractTextPlugin.extract({
  24.         loader: 'css-loader',
  25.         fallbackLoader: 'vue-style-loader' // <- this is a dep of vue-loader, so no need to explicitly install if using npm3
  26.         })
  27.     }
  28.     }
  29. });
  30.  
  31. module.exports = {
  32.   entry: './src/main.js',
  33.   output: {
  34.     path: path.resolve(__dirname, './dist'),
  35.     publicPath: '/dist/',
  36.     filename: 'build.js'
  37.   },
  38.   module: {
  39.     rules: [
  40.       vueLoaderRule,
  41.       {
  42.         test: /\.js$/,
  43.         loader: 'babel-loader',
  44.         exclude: /node_modules/
  45.       },
  46.       {
  47.         test: /\.(png|jpg|gif|svg)$/,
  48.         loader: 'file-loader',
  49.         options: {
  50.           name: '[name].[ext]?[hash]'
  51.         }
  52.       }
  53.     ]
  54.   },
  55.   resolve: {
  56.     alias: {
  57.       'vue$': 'vue/dist/vue.common.js'
  58.     }
  59.   },
  60.   devServer: {
  61.     historyApiFallback: true,
  62.     noInfo: true
  63.   },
  64.   performance: {
  65.     hints: false
  66.   },
  67.   plugins: [new ExtractTextPlugin("style.css")],
  68.   devtool: '#eval-source-map'
  69. }
  70.  
  71. if (process.env.NODE_ENV === 'production') {
  72.   module.exports.devtool = '#source-map'
  73.  
  74.   // http://vue-loader.vuejs.org/en/workflow/production.html
  75.   module.exports.plugins = (module.exports.plugins || []).concat([
  76.     new webpack.DefinePlugin({
  77.       'process.env': {
  78.         NODE_ENV: '"production"'
  79.       }
  80.     }),
  81.     new webpack.optimize.UglifyJsPlugin({
  82.       sourceMap: true,
  83.       compress: {
  84.         warnings: false
  85.       }
  86.     }),
  87.     new webpack.LoaderOptionsPlugin({
  88.       minimize: true
  89.     })
  90.   ]);
  91.  
  92.   var adjustedRules = module.exports.module.rules;
  93.  
  94.     adjustedRules.splice(
  95.     adjustedRules.indexOf(vueLoaderRule),
  96.     1,
  97.     vueLoaderRuleProd);
  98.    
  99.     module.exports.module.rules = adjustedRules;      
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement