Created
April 23, 2020 08:03
-
-
Save morphatic/055fb7db128470a41d160eaee59855c5 to your computer and use it in GitHub Desktop.
Configuring Webpack for use with Vuetify in TrilonIO/aspnetcore-Vue-starter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const path = require('path') | |
const webpack = require('webpack') | |
const MiniCssExtractPlugin = require('mini-css-extract-plugin') | |
const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') | |
const bundleOutputDir = './wwwroot/dist' | |
const VueLoaderPlugin = require('vue-loader/lib/plugin') | |
module.exports = () => { | |
console.log('Building 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: 'style.css' | |
}) | |
return [{ | |
mode: (isDevBuild ? 'development' : 'production'), | |
stats: { modules: false }, | |
entry: { 'main': './ClientApp/boot-app.js' }, | |
resolve: { | |
extensions: ['.js', '.vue'], | |
alias: isDevBuild ? { | |
'vue$': 'vue/dist/vue', | |
'components': path.resolve(__dirname, './ClientApp/components'), | |
'views': path.resolve(__dirname, './ClientApp/views'), | |
'utils': path.resolve(__dirname, './ClientApp/utils'), | |
'api': path.resolve(__dirname, './ClientApp/store/api') | |
} : { | |
'components': path.resolve(__dirname, './ClientApp/components'), | |
'views': path.resolve(__dirname, './ClientApp/views'), | |
'utils': path.resolve(__dirname, './ClientApp/utils'), | |
'api': path.resolve(__dirname, './ClientApp/store/api') | |
} | |
}, | |
output: { | |
path: path.join(__dirname, bundleOutputDir), | |
filename: '[name].js', | |
publicPath: '/dist/' | |
}, | |
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: /\.s[ca]ss$/, | |
use: [ | |
'vue-style-loader', | |
'css-loader', | |
{ | |
loader: 'sass-loader', | |
options: { | |
implementation: require('node-sass'), | |
fiber: require('fibers'), | |
indentedSyntax: true | |
} | |
} | |
] | |
} | |
] | |
}, | |
plugins: [ | |
new VueLoaderPlugin(), | |
new webpack.DllReferencePlugin({ | |
context: __dirname, | |
manifest: require('./wwwroot/dist/vendor-manifest.json') | |
}) | |
].concat(isDevBuild ? [ | |
// Plugins that apply in development builds only | |
new webpack.SourceMapDevToolPlugin({ | |
filename: '[file].map', // Remove this line if you prefer inline source maps | |
moduleFilenameTemplate: path.relative(bundleOutputDir, '[resourcePath]') // Point sourcemap entries to the original file locations on disk | |
}) | |
] : [ | |
extractCSS, | |
// Compress extracted CSS. | |
new OptimizeCSSPlugin({ | |
cssProcessorOptions: { | |
safe: true | |
} | |
}) | |
]) | |
}] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Created as part of the answer to this Stack Overflow question.