12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- const config = require('./src/config/env');
- const {
- resolve
- } = require('path')
- const webpack = require('webpack')
- const HtmlWebpackPlugin = require('html-webpack-plugin')
- const url = require('url')
- const publicPath = '/'
- module.exports = (options = {}) => ({
- entry: {
- // vendor: './src/vendor',
- index: './src/main.js'
- },
- output: {
- path: resolve(__dirname, 'dist'),
- filename: options.dev ? '[name].js' : '[name].js?[chunkhash]',
- chunkFilename: '[id].js?[chunkhash]',
- publicPath: options.dev ? '/assets/' : publicPath
- },
- module: {
- rules: [{
- test: /\.vue$/,
- use: ['vue-loader']
- },
- {
- test: /\.js$/,
- use: ['babel-loader'],
- exclude: /node_modules/
- },
- {
- test: /\.html$/,
- use: [{
- loader: 'html-loader',
- options: {
- root: resolve(__dirname, 'src'),
- attrs: ['img:src', 'link:href']
- }
- }]
- },
- {
- test: /\.css$/,
- use: ['style-loader', 'css-loader', 'postcss-loader']
- },
- {
- test: /favicon\.png$/,
- use: [{
- loader: 'file-loader',
- options: {
- name: '[name].[ext]?[hash]'
- }
- }]
- },
- {
- test: /\.(png|jpg|jpeg|gif|eot|ttf|woff|woff2|svg|svgz)(\?.+)?$/,
- exclude: /favicon\.png$/,
- use: [{
- loader: 'url-loader',
- options: {
- limit: 10000
- }
- }]
- }
- ]
- },
- plugins: [
- new webpack.optimize.CommonsChunkPlugin({
- names: ['vendor', 'manifest']
- }),
- new HtmlWebpackPlugin({
- template: 'src/index.html'
- })
- ],
- resolve: {
- alias: {
- '~': resolve(__dirname, 'src')
- }
- },
- devServer: {
- host: '0.0.0.0',
- port: 8080,
- proxy: {
- '/api/': {
- target: config.apiServer,
- changeOrigin: true,
- pathRewrite: {
- '^/api': ''
- }
- }
- },
- historyApiFallback: {
- index: url.parse(options.dev ? '/assets/' : publicPath).pathname
- }
- },
- devtool: options.dev ? '#eval-source-map' : '#source-map'
- })
|