| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| const path = require('path') |
| const MiniCssExtractPlugin = require('mini-css-extract-plugin') |
| const { VueLoaderPlugin } = require('vue-loader') |
| const vueLoaderConfig = require('./vue-loader.conf') |
| const utils = require('./utils') |
| const config = require('../config') |
| |
| function resolve(dir) { |
| return path.join(__dirname, '..', dir) |
| } |
| |
| const webpackConfig = { |
| mode: 'production', |
| resolve: { |
| extensions: ['.js', '.vue', '.json'], |
| alias: { |
| '@': resolve('src') |
| } |
| }, |
| module: { |
| rules: [ |
| { |
| test: /\.vue$/, |
| loader: 'vue-loader', |
| options: vueLoaderConfig |
| }, |
| { |
| test: /\.js$/, |
| loader: 'babel-loader', |
| include: [resolve('src'), resolve('test')] |
| }, |
| { |
| test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, |
| loader: 'url-loader', |
| exclude: [resolve('src/icons')], |
| options: { |
| limit: 10000, |
| name: utils.assetsPath('img/[name].[hash:7].[ext]') |
| } |
| }, |
| { |
| test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, |
| loader: 'url-loader', |
| options: { |
| limit: 10000, |
| name: utils.assetsPath('media/[name].[hash:7].[ext]') |
| } |
| } |
| ].concat( |
| utils.styleLoaders({ |
| sourceMap: config.build.productionSourceMap, |
| extract: true, |
| usePostCSS: true |
| }) |
| ) |
| }, |
| devtool: 'eval', |
| plugins: [ |
| new VueLoaderPlugin(), |
| new MiniCssExtractPlugin({ |
| filename: utils.assetsPath('css/[name].[contenthash].css') |
| }) |
| ] |
| } |
| |
| delete webpackConfig.entry; |
| |
| module.exports = webpackConfig; |