|
1 | | -const path = require('path') |
2 | | -const webpack = require('webpack') |
3 | | -const vueConfig = require('./vue-loader.config') |
| 1 | +const path = require("path"); |
| 2 | +const VueLoaderPlugin = require("vue-loader/lib/plugin"); |
| 3 | +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); |
4 | 4 |
|
5 | 5 | const config = { |
6 | | - devtool: '#source-map', |
| 6 | + devtool: "#source-map", |
7 | 7 | entry: { |
8 | | - app: './src/client-entry.js', |
9 | | - vendor: ['vue', 'vue-router', 'vuex', 'vuex-router-sync', 'axios'] |
| 8 | + app: "./src/client-entry.js", |
| 9 | + vendor: ["vue", "vue-router", "vuex", "vuex-router-sync", "axios"] |
10 | 10 | }, |
11 | 11 | resolve: { |
12 | | - modules: [path.resolve(__dirname, 'src'), 'node_modules'], |
13 | | - extensions: ['.js', '.vue'], |
| 12 | + modules: [path.resolve(__dirname, "src"), "node_modules"], |
| 13 | + extensions: [".js", ".vue"], |
14 | 14 | alias: { |
15 | | - 'src': path.resolve(__dirname, '../src'), |
16 | | - 'assets': path.resolve(__dirname, '../src/assets'), |
17 | | - 'components': path.resolve(__dirname, '../src/components'), |
18 | | - 'theme': path.resolve(__dirname, './src/theme'), |
| 15 | + src: path.resolve(__dirname, "../src"), |
| 16 | + assets: path.resolve(__dirname, "../src/assets"), |
| 17 | + components: path.resolve(__dirname, "../src/components"), |
| 18 | + theme: path.resolve(__dirname, "./src/theme") |
19 | 19 | } |
20 | 20 | }, |
21 | 21 | output: { |
22 | | - path: path.resolve(__dirname, '../dist'), |
23 | | - publicPath: '/', |
24 | | - filename: (process.env.NODE_ENV === 'production') ? 'assets/js/[name].[hash].js' : 'assets/js/[name].js' |
| 22 | + path: path.resolve(__dirname, "../dist"), |
| 23 | + publicPath: "/", |
| 24 | + filename: |
| 25 | + process.env.NODE_ENV === "production" |
| 26 | + ? "assets/js/[name].[hash].js" |
| 27 | + : "assets/js/[name].js" |
25 | 28 | }, |
26 | 29 | module: { |
27 | 30 | rules: [ |
28 | 31 | { |
29 | | - enforce: 'pre', |
| 32 | + enforce: "pre", |
30 | 33 | test: /\.js$/, |
31 | | - loader: 'eslint-loader', |
| 34 | + loader: "eslint-loader", |
32 | 35 | exclude: /node_modules/ |
33 | 36 | }, |
34 | 37 | { |
35 | | - enforce: 'pre', |
| 38 | + enforce: "pre", |
36 | 39 | test: /\.vue$/, |
37 | | - loader: 'eslint-loader', |
| 40 | + loader: "eslint-loader", |
38 | 41 | exclude: /node_modules/ |
39 | 42 | }, |
40 | 43 | { |
41 | 44 | test: /\.vue$/, |
42 | | - loader: 'vue-loader', |
43 | | - options: { |
44 | | - css: 'css-loader', |
45 | | - 'scss': 'css-loader|sass-loader' |
46 | | - } |
| 45 | + loader: "vue-loader" |
| 46 | + }, |
| 47 | + { |
| 48 | + test: /\.scss$/, |
| 49 | + use: ["vue-style-loader", "css-loader", "sass-loader"] |
| 50 | + }, |
| 51 | + { |
| 52 | + test: /\.css$/, |
| 53 | + use: [ |
| 54 | + process.env.NODE_ENV !== "production" |
| 55 | + ? "vue-style-loader" |
| 56 | + : MiniCssExtractPlugin.loader, |
| 57 | + "css-loader" |
| 58 | + ] |
47 | 59 | }, |
48 | 60 | { |
49 | 61 | test: /\.js$/, |
50 | | - loader: 'babel-loader', |
| 62 | + loader: "babel-loader", |
51 | 63 | exclude: /node_modules/ |
52 | 64 | }, |
53 | 65 | { |
54 | 66 | test: /\.(png|jpg|gif|svg)$/, |
55 | | - loader: 'file-loader', |
| 67 | + loader: "file-loader", |
56 | 68 | options: { |
57 | | - name: 'assets/[name].[ext]?[hash]' |
| 69 | + name: "assets/[name].[ext]?[hash]" |
58 | 70 | } |
59 | 71 | }, |
60 | 72 | { |
61 | 73 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, |
62 | | - loader: 'url-loader', |
| 74 | + loader: "url-loader", |
63 | 75 | query: { |
64 | 76 | limit: 10000, |
65 | | - name: 'assets/fonts/[name]_[hash:7].[ext]' |
| 77 | + name: "assets/fonts/[name]_[hash:7].[ext]" |
66 | 78 | } |
67 | 79 | } |
68 | 80 | ] |
69 | 81 | }, |
70 | | - plugins: [] |
71 | | -} |
| 82 | + plugins: [new VueLoaderPlugin()] |
| 83 | +}; |
72 | 84 |
|
73 | | -module.exports = config |
| 85 | +module.exports = config; |
0 commit comments