webpack.config.vendor.js 2.2 KB

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