@@ -3,6 +3,8 @@ const path = require('path');
3
3
const ExtractTextPlugin = require ( 'extract-text-webpack-plugin' ) ;
4
4
const HtmlWebpackPlugin = require ( 'html-webpack-plugin' ) ;
5
5
const CopyWebpackPlugin = require ( 'copy-webpack-plugin' ) ;
6
+ const { CheckerPlugin} = require ( 'awesome-typescript-loader' ) ;
7
+ const { TypewizPlugin, typewizCollectorMiddleware} = require ( 'typewiz-webpack' ) ;
6
8
7
9
const extractCSS = new ExtractTextPlugin ( '[name].fonts.css' ) ;
8
10
const extractSCSS = new ExtractTextPlugin ( '[name].styles.css' ) ;
@@ -14,99 +16,109 @@ console.log('BUILD_DIR', BUILD_DIR);
14
16
console . log ( 'SRC_DIR' , SRC_DIR ) ;
15
17
16
18
module . exports = ( env = { } ) => {
17
- return {
18
- entry : {
19
- index : [ SRC_DIR + '/index.js' ]
20
- } ,
21
- output : {
22
- path : BUILD_DIR ,
23
- filename : '[name].bundle.js'
24
- } ,
25
- // watch: true,
26
- devtool : env . prod ? 'source-map' : 'cheap-module-eval-source-map' ,
27
- devServer : {
28
- contentBase : BUILD_DIR ,
29
- // port: 9001,
30
- compress : true ,
31
- hot : true ,
32
- open : true
33
- } ,
34
- module : {
35
- rules : [
36
- {
37
- test : / \. ( j s | j s x ) $ / ,
38
- exclude : / n o d e _ m o d u l e s / ,
39
- use : {
40
- loader : 'babel-loader' ,
41
- options : {
42
- cacheDirectory : true ,
43
- presets : [ 'react' , 'env' ]
44
- }
45
- }
19
+ return {
20
+ entry : {
21
+ index : [ SRC_DIR + '/index.js' ]
46
22
} ,
47
- {
48
- test : / \. h t m l $ / ,
49
- loader : 'html-loader '
23
+ output : {
24
+ path : BUILD_DIR ,
25
+ filename : '[name].bundle.js '
50
26
} ,
51
- {
52
- test : / \. ( s c s s ) $ / ,
53
- use : [ 'css-hot-loader' ] . concat ( extractSCSS . extract ( {
54
- fallback : 'style-loader' ,
55
- use : [
56
- {
57
- loader : 'css-loader' ,
58
- options : { alias : { '../img' : '../public/img' } }
59
- } ,
60
- {
61
- loader : 'sass-loader'
62
- }
63
- ]
64
- } ) )
27
+ // watch: true,
28
+ devtool : env . prod ? 'source-map' : 'cheap-module-eval-source-map' ,
29
+ devServer : {
30
+ before : function ( app ) {
31
+ typewizCollectorMiddleware ( app , 'collected-types.json' ) ;
32
+ } ,
33
+ contentBase : BUILD_DIR ,
34
+ // port: 9001,
35
+ compress : true ,
36
+ hot : true ,
37
+ open : true
65
38
} ,
66
- {
67
- test : / \. c s s $ / ,
68
- use : extractCSS . extract ( {
69
- fallback : 'style-loader' ,
70
- use : 'css-loader'
71
- } )
39
+ module : {
40
+ rules : [
41
+ {
42
+ test : / \. t s x ? $ / ,
43
+ loaders : [ 'awesome-typescript-loader' , 'typewiz-webpack' ]
44
+ } ,
45
+ {
46
+ test : / \. ( j s | j s x ) $ / ,
47
+ exclude : / n o d e _ m o d u l e s / ,
48
+ use : {
49
+ loader : 'babel-loader' ,
50
+ options : {
51
+ cacheDirectory : true ,
52
+ presets : [ 'react' , 'env' ]
53
+ }
54
+ }
55
+ } ,
56
+ {
57
+ test : / \. h t m l $ / ,
58
+ loader : 'html-loader'
59
+ } ,
60
+ {
61
+ test : / \. ( s c s s ) $ / ,
62
+ use : [ 'css-hot-loader' ] . concat ( extractSCSS . extract ( {
63
+ fallback : 'style-loader' ,
64
+ use : [
65
+ {
66
+ loader : 'css-loader' ,
67
+ options : { alias : { '../img' : '../public/img' } }
68
+ } ,
69
+ {
70
+ loader : 'sass-loader'
71
+ }
72
+ ]
73
+ } ) )
74
+ } ,
75
+ {
76
+ test : / \. c s s $ / ,
77
+ use : extractCSS . extract ( {
78
+ fallback : 'style-loader' ,
79
+ use : 'css-loader'
80
+ } )
81
+ } ,
82
+ {
83
+ test : / \. ( p n g | j p g | j p e g | g i f | i c o ) $ / ,
84
+ use : [
85
+ {
86
+ // loader: 'url-loader'
87
+ loader : 'file-loader' ,
88
+ options : {
89
+ name : './img/[name].[hash].[ext]'
90
+ }
91
+ }
92
+ ]
93
+ } ,
94
+ {
95
+ test : / \. ( w o f f ( 2 ) ? | t t f | e o t | s v g ) ( \? v = \d + \. \d + \. \d + ) ? $ / ,
96
+ loader : 'file-loader' ,
97
+ options : {
98
+ name : './fonts/[name].[hash].[ext]'
99
+ }
100
+ } ]
72
101
} ,
73
- {
74
- test : / \. ( p n g | j p g | j p e g | g i f | i c o ) $ / ,
75
- use : [
76
- {
77
- // loader: 'url-loader'
78
- loader : 'file-loader' ,
79
- options : {
80
- name : './img/[name].[hash].[ext]'
81
- }
82
- }
83
- ]
84
- } ,
85
- {
86
- test : / \. ( w o f f ( 2 ) ? | t t f | e o t | s v g ) ( \? v = \d + \. \d + \. \d + ) ? $ / ,
87
- loader : 'file-loader' ,
88
- options : {
89
- name : './fonts/[name].[hash].[ext]'
90
- }
91
- } ]
92
- } ,
93
- plugins : [
94
- new webpack . HotModuleReplacementPlugin ( ) ,
95
- new webpack . optimize . UglifyJsPlugin ( { sourceMap : true } ) ,
96
- new webpack . NamedModulesPlugin ( ) ,
97
- extractCSS ,
98
- extractSCSS ,
99
- new HtmlWebpackPlugin (
100
- {
101
- inject : true ,
102
- template : './public/index.html'
103
- }
104
- ) ,
105
- new CopyWebpackPlugin ( [
106
- { from : './public/img' , to : 'img' }
107
- ] ,
108
- { copyUnmodified : false }
109
- )
110
- ]
111
- }
112
- } ;
102
+ plugins : [
103
+ new webpack . HotModuleReplacementPlugin ( ) ,
104
+ new webpack . optimize . UglifyJsPlugin ( { sourceMap : true } ) ,
105
+ new webpack . NamedModulesPlugin ( ) ,
106
+ new CheckerPlugin ( ) ,
107
+ new TypewizPlugin ( ) ,
108
+
109
+ extractCSS ,
110
+ extractSCSS ,
111
+ new HtmlWebpackPlugin (
112
+ {
113
+ inject : true ,
114
+ template : './public/index.html'
115
+ }
116
+ ) ,
117
+ new CopyWebpackPlugin ( [
118
+ { from : './public/img' , to : 'img' }
119
+ ] ,
120
+ { copyUnmodified : false }
121
+ ) ,
122
+ ]
123
+ }
124
+ } ;
0 commit comments