@@ -3,12 +3,12 @@ const MiniCssExtractPlugin = require("mini-css-extract-plugin");
3
3
const CopyWebpackPlugin = require ( "copy-webpack-plugin" ) ;
4
4
const HtmlWebpackPlugin = require ( "html-webpack-plugin" ) ;
5
5
const HtmlPluginRemove = require ( "html-webpack-plugin-remove" ) ;
6
- const { VueLoaderPlugin } = require ( ' vue-loader' )
6
+ const { VueLoaderPlugin} = require ( " vue-loader" ) ;
7
7
const isProduction = process . env . NODE_ENV !== "production" ;
8
8
9
9
const PATHS = {
10
- src : path . join ( __dirname , "../src" ) ,
11
- dist : path . join ( __dirname , "../dist" ) ,
10
+ src : path . resolve ( __dirname , "../src" ) ,
11
+ dist : path . resolve ( __dirname , "../dist" ) ,
12
12
assets : "assets/"
13
13
} ;
14
14
@@ -23,7 +23,8 @@ module.exports = {
23
23
} ,
24
24
output : {
25
25
filename : `${ PATHS . assets } js/[name].[hash].js` ,
26
- path : PATHS . dist
26
+ path : PATHS . dist ,
27
+ publicPath : "/"
27
28
} ,
28
29
optimization : {
29
30
splitChunks : {
@@ -43,78 +44,80 @@ module.exports = {
43
44
loader : "babel-loader" ,
44
45
exclude : isProduction ? [ / n o d e _ m o d u l e s / , / \. s m a r t - g r e a d - l a y e r $ / ] : / n o d e _ m o d u l e s / ,
45
46
} ,
46
- {
47
- test : / \. v u e $ / ,
48
- loader : "vue-loader" ,
49
- options : {
50
- loader : {
51
- scss : 'vue-style-loader!css-loader!sass-loader'
47
+ {
48
+ test : / \. v u e $ / ,
49
+ loader : "vue-loader" ,
50
+ options : {
51
+ loader : {
52
+ scss : "vue-style-loader!css-loader!sass-loader"
53
+ }
52
54
}
53
- }
54
- } ,
55
- {
56
- // Fonts
57
- test : / \. ( w o f f ( 2 ) ? | t t f | e o t | s v g ) ( \? v = \d + \. \d + \. \d + ) ? $ / ,
58
- loader : "file-loader" ,
59
- options : {
60
- name : "[name].[ext]"
61
- }
62
- } ,
63
- {
64
- test : / \. ( p n g | j p g | g i f | s v g ) $ / ,
65
- loader : "file-loader" ,
66
- options : {
67
- name : "[name].[ext]"
68
- }
69
- } , {
70
- test : / \. s c s s $ / ,
71
- use : [
72
- "style-loader" ,
73
- MiniCssExtractPlugin . loader ,
74
- {
75
- loader : "css-loader" ,
76
- options : { sourceMap : true }
77
- } ,
78
- {
79
- loader : "postcss-loader" ,
80
- options : { sourceMap : true , config : { path : "./postcss.config.js" } }
81
- } ,
82
- {
83
- loader : "sass-loader" ,
84
- options : { sourceMap : true }
85
- } ,
86
- {
87
- loader : 'sass-resources-loader' ,
88
- options : {
89
- resources : [
90
- './src/assets/scss/utils/vars.scss' ,
91
- './src/assets/scss/utils/mixins.scss' ,
92
- './src/assets/scss/utils/fonts.scss'
93
- ]
94
- } ,
55
+ } ,
56
+ {
57
+ // Fonts
58
+ test : / \. ( w o f f ( 2 ) ? | t t f | e o t | s v g ) ( \? v = \d + \. \d + \. \d + ) ? $ / ,
59
+ loader : "file-loader" ,
60
+ options : {
61
+ name : "[name].[ext]"
95
62
}
96
- ]
97
- } , {
98
- test : / \. c s s $ / ,
99
- use : [
100
- "style-loader" ,
101
- MiniCssExtractPlugin . loader ,
102
- {
103
- loader : "css-loader" ,
104
- options : { sourceMap : true }
105
- } , {
106
- loader : "postcss-loader" ,
107
- options : { sourceMap : true , config : { path : "./postcss.config.js" } }
63
+ } ,
64
+ {
65
+ test : / \. ( p n g | j p g | g i f | s v g ) $ / ,
66
+ loader : "file-loader" ,
67
+ options : {
68
+ name : "[name].[ext]"
108
69
}
109
- ]
110
- }
111
- ]
70
+ } , {
71
+ test : / \. s c s s $ / ,
72
+ use : [
73
+ "style-loader" ,
74
+ MiniCssExtractPlugin . loader ,
75
+ {
76
+ loader : "css-loader" ,
77
+ options : { sourceMap : true }
78
+ } ,
79
+ {
80
+ loader : "postcss-loader" ,
81
+ options : { sourceMap : true , config : { path : "./postcss.config.js" } }
82
+ } ,
83
+ {
84
+ loader : "sass-loader" ,
85
+ options : { sourceMap : true }
86
+ } ,
87
+ {
88
+ loader : "sass-resources-loader" ,
89
+ options : {
90
+ resources : [
91
+ "./src/assets/scss/utils/vars.scss" ,
92
+ "./src/assets/scss/utils/mixins.scss" ,
93
+ "./src/assets/scss/utils/fonts.scss"
94
+ ]
95
+ } ,
96
+ }
97
+ ]
98
+ } , {
99
+ test : / \. c s s $ / ,
100
+ use : [
101
+ "style-loader" ,
102
+ MiniCssExtractPlugin . loader ,
103
+ {
104
+ loader : "css-loader" ,
105
+ options : { sourceMap : true }
106
+ } , {
107
+ loader : "postcss-loader" ,
108
+ options : { sourceMap : true , config : { path : "./postcss.config.js" } }
109
+ }
110
+ ]
111
+ }
112
+ ]
112
113
} ,
113
114
resolve : {
114
115
alias : {
115
116
"~" : PATHS . src ,
116
- vue$ : "vue/dist/vue.js"
117
- }
117
+ "vue$" : "vue/dist/vue.js" ,
118
+ "@" : PATHS . src ,
119
+ } ,
120
+ extensions : [ "*" , ".js" , ".vue" , ".json" ]
118
121
} ,
119
122
plugins : [
120
123
new VueLoaderPlugin ( ) ,
@@ -127,11 +130,11 @@ module.exports = {
127
130
template : `${ PATHS . src } /index.html` ,
128
131
filename : "./index.html"
129
132
} ) ,
130
- new HtmlPluginRemove ( / < ! - - d e l e t e s t a r t - - > [ \s \S ] * < ! - - d e l e t e e n d - - > / gi) ,
133
+ new HtmlPluginRemove ( / < ! - - d e l e t e s t a r t - - > [ \s \S ] * < ! - - d e l e t e e n d - - > / gi) ,
131
134
new CopyWebpackPlugin ( [
132
- { from : `${ PATHS . src } /${ PATHS . assets } img` , to : `${ PATHS . assets } img` } ,
133
- { from : `${ PATHS . src } /${ PATHS . assets } fonts` , to : `${ PATHS . assets } fonts` } ,
134
- { from : `${ PATHS . src } /static` , to : "" }
135
+ { from : `${ PATHS . src } /${ PATHS . assets } img` , to : `${ PATHS . assets } img` } ,
136
+ { from : `${ PATHS . src } /${ PATHS . assets } fonts` , to : `${ PATHS . assets } fonts` } ,
137
+ { from : `${ PATHS . src } /static` , to : "" }
135
138
] )
136
139
] ,
137
140
} ;
0 commit comments