1- var webpack = require ( 'webpack' ) ;
2- var ExtractTextPlugin = require ( "extract-text-webpack-plugin" ) ;
3- var pkg = require ( '../package.json' ) ;
4- var packageName = "iclient9-leaflet" ;
5- var banner = `
6- iclient9-leaflet.(${ pkg . homepage } )
7- Copyright© 2000-2017 SuperMap Software Co. Ltd
8- license: ${ pkg . license }
9- version: v${ pkg . version }
10- ` ;
1+ let configBase = require ( "./webpack.config.base" ) ;
2+
3+ //端名
4+ const libName = "leaflet" ;
5+ //产品包名
6+ const productName = "iclient9-leaflet" ;
117
128module . exports = {
13- mode :"production" ,
9+ mode : configBase . mode ,
1410 //页面入口文件配置
15- entry : { } ,
11+ entry : configBase . entry ,
1612 //入口文件输出配置
17- output : {
18- path : __dirname + '/../dist' ,
19- filename : packageName + ".js"
20- } ,
21-
13+ output : configBase . output ( libName , productName ) ,
2214 //是否启用压缩
23- optimization : {
24- minimize : false
25- } ,
15+ optimization : configBase . optimization ,
2616 //不显示打包文件大小相关警告
27- performance : {
28- hints : false
29- } ,
30-
17+ performance : configBase . performance ,
3118 //其它解决方案配置
32- resolve : {
33- extensions : [ '.js' , '.json' , '.css' ]
34- } ,
35- externals : {
19+ resolve : configBase . resolve ,
20+
21+ externals : Object . assign ( { } , configBase . externals , {
3622 'leaflet' : 'L' ,
37- 'echarts' : 'function(){try{return echarts}catch(e){return {}}}()' ,
38- 'mapv' : "function(){try{return mapv}catch(e){return {}}}()" ,
39- 'elasticsearch' : 'function(){try{return elasticsearch}catch(e){return {}}}()' ,
4023 '@turf/turf' : "function(){try{return turf}catch(e){return {}}}()" ,
4124 'deck.gl' : '(function(){try{return DeckGL}catch(e){return {}}})()' ,
4225 'luma.gl' : '(function(){try{return luma}catch(e){return {}}})()' ,
4326 'webgl-debug' : '(function(){try{return webgl-debug}catch(e){return {}}})()'
44- } ,
27+ } ) ,
4528
4629 module : {
47- rules : [ {
48- //图片小于80k采用base64编码
49- test : / \. ( p n g | j p g | j p e g | g i f | w o f f | w o f f 2 | s v g | e o t | t t f ) $ / ,
50- use : [ {
51- loader : 'url-loader' ,
52- options : {
53- limit : 80000
54- }
55- } ]
56- } , {
57- test : [ / \. j s $ / ] ,
58- exclude : / n o d e _ m o d u l e s / ,
59- enforce : 'pre' ,
60- loader : 'eslint-loader' ,
61- options : {
62- failOnError : true
63- }
64- } , {
65- test : [ / \. j s $ / ] ,
66- exclude : / s e t I m m e d i a t e | w e b g l - d e b u g / ,
67- loader : 'babel-loader' ,
68- options : {
69- presets : [ 'es2015' ]
30+ rules : ( function ( ) {
31+ let moduleRules = [ ] ;
32+ moduleRules . push ( configBase . module . rules . img ) ;
33+ moduleRules . push ( configBase . module . rules . eslint ) ;
34+ if ( configBase . moduleVersion === "es5" ) {
35+ //打包为es5相关配置
36+ moduleRules . push ( {
37+ test : [ / \. j s $ / ] ,
38+ exclude : / s e t I m m e d i a t e | w e b g l - d e b u g / ,
39+ loader : 'babel-loader' ,
40+ options : {
41+ presets : [ 'es2015' ]
42+ }
43+ } ) ;
44+ //兼容es3相关配置
45+ moduleRules . push ( {
46+ test : / \. j s $ / ,
47+ enforce : "post" ,
48+ loaders : [ 'es3ify-loader' ]
49+ } ) ;
7050 }
71- } , {
72- test : / \. j s $ / ,
73- enforce : "post" ,
74- loaders : [ 'es3ify-loader' ]
75- } , {
76- test : / \. c s s $ / ,
77- use : ExtractTextPlugin . extract ( {
78- use : {
79- loader : 'css-loader'
80- }
81- } )
82- } ]
51+ moduleRules . push ( configBase . module . rules . css ) ;
52+ return moduleRules
53+ } ) ( )
8354 } ,
84- plugins : [
85- new webpack . BannerPlugin ( banner ) ,
86- new ExtractTextPlugin ( '/../dist/' + packageName + ".css" ) ,
87- new webpack . NoEmitOnErrorsPlugin ( )
88- ]
89- } ;
55+ plugins : configBase . plugins ( libName , productName )
56+ } ;
0 commit comments