1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- const path = require('path')
- const webpack = require('webpack')
- const MiniCssExtractPlugin = require('mini-css-extract-plugin')
- const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
- module.exports = () => {
- // console.log('Building vendor files for \x1b[33m%s\x1b[0m', process.env.NODE_ENV)
- const isDevBuild = !(process.env.NODE_ENV && process.env.NODE_ENV === 'production')
-
- const extractCSS = new MiniCssExtractPlugin({
- filename: 'vendor.css'
- })
- return [{
- mode: (isDevBuild ? 'development' : 'production' ),
- stats: { modules: false },
- resolve: {
- extensions: ['.js']
- },
- module: {
- rules: [
- { test: /\.vue$/, include: /ClientApp/, use: 'vue-loader' },
- { test: /\.js$/, include: /ClientApp/, use: 'babel-loader' },
- { test: /\.css$/, use: isDevBuild ? ['style-loader', 'css-loader'] : [MiniCssExtractPlugin.loader, 'css-loader'] },
- { test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' },
- { test: /\.(eot|ttf|woff|woff2)$/, loader: 'file-loader' },
- { test: /\.less$/, use: [{ loader: "style-loader" }, { loader: "css-loader" }, { loader: "less-loader", options: { javascriptEnabled: true } }] }
- ]
- },
- entry: {
- vendor: ['event-source-polyfill', 'vue', 'vuex', 'axios', 'vue-router']
- },
- output: {
- path: path.join(__dirname, 'wwwroot', 'dist'),
- publicPath: '/dist/',
- filename: '[name].js',
- library: '[name]_[hash]'
- },
- plugins: [
- extractCSS,
- new OptimizeCSSPlugin({
- cssProcessorOptions: {
- safe: true
- }
- }),
- new webpack.DllPlugin({
- path: path.join(__dirname, 'wwwroot', 'dist', '[name]-manifest.json'),
- name: '[name]_[hash]'
- })
- ]
- }]
- }
|