1+ var path = require ( 'path' ) ;
2+
3+ const IgnorePlugin = require ( 'webpack/lib/IgnorePlugin' ) ;
4+ const DefinePlugin = require ( 'webpack/lib/DefinePlugin' ) ;
5+ const NoErrorsPlugin = require ( 'webpack/lib/NoErrorsPlugin' ) ;
6+ const DedupePlugin = require ( 'webpack/lib/optimize/DedupePlugin' ) ;
7+ const UglifyJsPlugin = require ( 'webpack/lib/optimize/UglifyJsPlugin' ) ;
8+ const OccurenceOrderPlugin = require ( 'webpack/lib/optimize/OccurenceOrderPlugin' ) ;
9+ const HotModuleReplacementPlugin = require ( 'webpack/lib/HotModuleReplacementPlugin' ) ;
10+ const AggressiveMergingPlugin = require ( 'webpack/lib/optimize/AggressiveMergingPlugin' ) ;
11+
12+ const srcPath = path . join ( __dirname , 'src' ) ;
13+
14+ function containsObject ( obj , list ) {
15+ var i ;
16+ for ( i = 0 ; i < list . length ; i ++ ) {
17+ if ( list [ i ] === obj ) {
18+ return true ;
19+ }
20+ }
21+ return false ;
22+ }
23+
24+ const externals = [ ] ;
25+ const explicitExternals = [ ] ;
26+ const internals = [ 'fabric' , 'canvas' ] ;
27+ Object . keys ( require ( './package.json' ) . devDependencies ) . forEach ( function ( k ) {
28+ if ( ! containsObject ( k , internals ) ) externals . push ( k ) ;
29+ } ) ;
30+
31+ module . exports = {
32+ entry : {
33+ src : './src'
34+ } ,
35+ output : {
36+ path : path . join ( __dirname , 'lib' ) ,
37+ filename : 'index.js' ,
38+ libraryTarget : 'umd'
39+ } ,
40+ //Every non-relative module is external apart from those given.
41+ //externals: [/^(?!fabric|canvas|base64-js|ieee754|isarray|jsdom|xmldom)[a-z\-0-9]+$/],
42+ externals : explicitExternals . concat ( externals ) ,
43+ resolve : {
44+ extensions : [ '' , '.js' , '.jsx' ]
45+ } ,
46+ debug : false ,
47+ cache : true ,
48+ module : {
49+ loaders : [
50+ {
51+ test : / \. ( j s | j s x ) $ / ,
52+ include : [ srcPath ] ,
53+ exclude : / ( n o d e _ m o d u l e s | b o w e r _ c o m p o n e n t s | l i b ) / ,
54+ loaders : [ 'babel' ]
55+ }
56+ ]
57+ } ,
58+ plugins : [
59+ // minify on production
60+ new DedupePlugin ( ) ,
61+ new UglifyJsPlugin ( {
62+ compress : {
63+ warnings : false
64+ }
65+ } ) ,
66+ new OccurenceOrderPlugin ( ) ,
67+ new AggressiveMergingPlugin ( ) ,
68+ new IgnorePlugin ( new RegExp ( '^(fs|ipc)$' ) ) ,
69+ new DefinePlugin ( { 'process.env.NODE_ENV' : '"production"' } ) ,
70+ new HotModuleReplacementPlugin ( ) ,
71+ new NoErrorsPlugin ( )
72+ ]
73+ } ;
0 commit comments