@@ -19,7 +19,9 @@ let targets;
1919if ( process . env . DEBUG === 'true' ) {
2020 targets = { browsers : 'last 1 Chrome version' } ;
2121} else {
22- targets = JSON . parse ( fs . readFileSync ( './config/browsers.json' ) ) ;
22+ targets = JSON . parse (
23+ fs . readFileSync ( path . resolve ( __dirname , 'config/browsers.json' ) )
24+ ) ;
2325}
2426const babelrc = {
2527 presets : [
@@ -69,7 +71,7 @@ module.exports = {
6971 sourceMapFilename : 'application.js.map' ,
7072 } ,
7173 module : {
72- loaders : [
74+ rules : [
7375 {
7476 test : / \. j s x ? $ / ,
7577 include : [
@@ -78,50 +80,70 @@ module.exports = {
7880 ] ,
7981 use : [
8082 { loader : 'babel-loader' , options : babelrc } ,
81- { loader : 'eslint-loader' } ,
83+ 'eslint-loader'
8284 ] ,
8385 } ,
8486 {
85- test : / \. j s $ / ,
86- include : [
87- path . resolve ( __dirname , 'node_modules/htmllint' ) ,
88- ] ,
89- loader : 'transform-loader/cacheable?bulkify' ,
87+ test : / \. j s o n $ / ,
88+ use : [ 'json-loader' ] ,
9089 } ,
9190 {
92- test : / \. j s $ / ,
9391 include : [
94- path . resolve ( __dirname , 'node_modules/PrettyCSS ' ) ,
95- path . resolve ( __dirname , 'node_modules/css ' ) ,
92+ path . resolve ( __dirname , 'bower_components ' ) ,
93+ path . resolve ( __dirname , 'templates ' ) ,
9694 ] ,
97- loader : 'transform -loader/cacheable?brfs' ,
95+ use : [ 'raw -loader' ] ,
9896 } ,
9997 {
100- test : / \. j s $ / ,
101- include : [
102- path . resolve ( __dirname , 'node_modules/postcss/lib/previous-map' ) ,
103- path . resolve (
104- __dirname ,
105- 'node_modules/stylelint/lib/getPostcssResult'
106- ) ,
107- matchModule ( 'postcss/lib/previous-map' ) ,
98+ test : / \. s v g $ / ,
99+ use : [
100+ 'svg-react-loader' ,
101+ {
102+ loader : 'svgo-loader' ,
103+ options : {
104+ plugins : [
105+ {
106+ removeXMLNS : true ,
107+ } ,
108+ {
109+ removeAttrs : {
110+ active : true ,
111+ attrs : 'svg:data-name' ,
112+ } ,
113+ } ,
114+ ] ,
115+ } ,
116+ } ,
108117 ] ,
109- loader : 'string-replace-loader' ,
110- query : {
111- search : / r e q u i r e \( [ ' " ] f s [ ' " ] \) / ,
112- replace : '{}' ,
113- } ,
118+ } ,
119+ {
120+ include : path . resolve ( __dirname , 'locales' ) ,
121+ use : [ {
122+ loader : 'i18next-resource-store-loader' ,
123+ options : 'include=\\.json$' ,
124+ } ] ,
125+ } ,
126+ {
127+ include : matchModule ( 'htmllint' ) ,
128+ enforce : 'post' ,
129+ use : [ 'transform-loader/cacheable?bulkify' ] ,
130+ } ,
131+ {
132+ include : [ matchModule ( 'PrettyCSS' ) , matchModule ( 'css' ) ] ,
133+ use : [ 'transform-loader/cacheable?brfs' ] ,
114134 } ,
115135 {
116136 test : / \. j s $ / ,
117137 include : [
118138 matchModule ( 'htmllint' ) ,
119139 ] ,
120- loader : 'string-replace-loader' ,
121- query : {
122- search : 'require(plugin)' ,
123- replace : 'undefined' ,
124- } ,
140+ use : [ {
141+ loader : 'string-replace-loader' ,
142+ options : {
143+ search : 'require(plugin)' ,
144+ replace : 'undefined' ,
145+ } ,
146+ } ] ,
125147 } ,
126148 {
127149 test : / \. j s $ / ,
@@ -131,8 +153,10 @@ module.exports = {
131153 'node_modules/stylelint/lib/utils/isAutoprefixable'
132154 ) ,
133155 ] ,
134- loader : 'substitute-loader' ,
135- query : { content : '() => false' } ,
156+ use : [ {
157+ loader : 'substitute-loader' ,
158+ options : { content : '() => false' } ,
159+ } ] ,
136160 } ,
137161 {
138162 test : / \. j s $ / ,
@@ -145,14 +169,14 @@ module.exports = {
145169 use : { loader : 'babel-loader' , options : babelrc } ,
146170 } ,
147171 {
148- include : [
149- path . resolve (
150- __dirname ,
151- 'node_modules/html-inspector/html-inspector.js'
152- ) ,
172+ include : matchModule ( 'html-inspector' ) ,
173+ use : [
174+ { loader : 'imports-loader' , options : 'window=>{}' } ,
175+ {
176+ loader : 'exports-loader' ,
177+ options : { 'window.HTMLInspector' : true } ,
178+ } ,
153179 ] ,
154- loader :
155- 'imports-loader?window=>{}!exports-loader?window.HTMLInspector' ,
156180 } ,
157181 {
158182 test : / \. j s $ / ,
@@ -165,7 +189,7 @@ module.exports = {
165189 matchModule ( 'stylelint/lib/dynamicRequire' ) ,
166190 matchModule ( 'css/lib/stringify/source-map-support' ) ,
167191 ] ,
168- loader : 'null-loader' ,
192+ use : [ 'null-loader' ] ,
169193 } ,
170194 {
171195 test : / \. j s $ / ,
@@ -176,48 +200,11 @@ module.exports = {
176200 'declaration-block-trailing-semicolon/index.js' ,
177201 ]
178202 ) ,
179- loader : 'null-loader' ,
180- } ,
181- {
182- test : / \. j s o n $ / ,
183- loader : 'json-loader' ,
184- } ,
185- {
186- include : [
187- path . resolve ( __dirname , 'bower_components' ) ,
188- path . resolve ( __dirname , 'templates' ) ,
189- ] ,
190- use : { loader : 'raw-loader' } ,
191- } ,
192- {
193- test : / \. s v g $ / ,
194- loader : [
195- 'svg-react-loader' ,
196- {
197- loader : 'svgo-loader' ,
198- query : {
199- plugins : [
200- {
201- removeXMLNS : true ,
202- } ,
203- {
204- removeAttrs : {
205- active : true ,
206- attrs : 'svg:data-name' ,
207- } ,
208- } ,
209- ] ,
210- } ,
211- } ,
212- ] ,
213- } ,
214- {
215- include : path . resolve ( __dirname , 'locales' ) ,
216- loader : 'i18next-resource-store-loader' ,
217- query : 'include=\\.json$' ,
218- } ,
203+ use : [ 'null-loader' ] ,
204+ }
219205 ] ,
220206 } ,
207+
221208 plugins : [
222209 new webpack . EnvironmentPlugin ( {
223210 FIREBASE_APP : 'popcode-development' ,
@@ -229,6 +216,11 @@ module.exports = {
229216 GOOGLE_ANALYTICS_TRACKING_ID : 'UA-90316486-2'
230217 } ) ,
231218 ] ,
219+
220+ node : {
221+ fs : 'empty' ,
222+ } ,
223+
232224 resolve : {
233225 alias : {
234226 'github-api$' : 'github-api/dist/components/GitHub.js' ,
0 commit comments