webpack.config.vendor.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. const path = require('path')
  2. const webpack = require('webpack')
  3. const MiniCssExtractPlugin = require('mini-css-extract-plugin')
  4. const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
  5. module.exports = () => {
  6. // console.log('Building vendor files for \x1b[33m%s\x1b[0m', process.env.NODE_ENV)
  7. const isDevBuild = !(process.env.NODE_ENV && process.env.NODE_ENV === 'production')
  8. const extractCSS = new MiniCssExtractPlugin({
  9. filename: 'vendor.css'
  10. })
  11. return [{
  12. mode: (isDevBuild ? 'development' : 'production' ),
  13. stats: { modules: false },
  14. resolve: {
  15. extensions: ['.js']
  16. },
  17. module: {
  18. rules: [
  19. { test: /\.vue$/, include: /ClientApp/, use: 'vue-loader' },
  20. { test: /\.js$/, include: /ClientApp/, use: 'babel-loader' },
  21. { test: /\.css$/, use: isDevBuild ? ['style-loader', 'css-loader'] : [MiniCssExtractPlugin.loader, 'css-loader'] },
  22. { test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' },
  23. { test: /\.(eot|ttf|woff|woff2)$/, loader: 'file-loader' },
  24. { test: /\.less$/, use: [{ loader: "style-loader" }, { loader: "css-loader" }, { loader: "less-loader", options: { javascriptEnabled: true } }] }
  25. ]
  26. },
  27. entry: {
  28. vendor: ['event-source-polyfill', 'vue', 'vuex', 'axios', 'vue-router']
  29. },
  30. output: {
  31. path: path.join(__dirname, 'wwwroot', 'dist'),
  32. publicPath: '/dist/',
  33. filename: '[name].js',
  34. library: '[name]_[hash]'
  35. },
  36. plugins: [
  37. extractCSS,
  38. new OptimizeCSSPlugin({
  39. cssProcessorOptions: {
  40. safe: true
  41. }
  42. }),
  43. new webpack.DllPlugin({
  44. path: path.join(__dirname, 'wwwroot', 'dist', '[name]-manifest.json'),
  45. name: '[name]_[hash]'
  46. })
  47. ]
  48. }]
  49. }