|
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