Skip to content

Commit a931acb

Browse files
committed
【package】新增ES6打包 && 更改dist包目录结构(dist/xxx.js==>dist/xxx/xxx.js) && 更改示例产品包引用地址
1 parent ae463eb commit a931acb

676 files changed

Lines changed: 324680 additions & 70313 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

build/webpack.config.base.js

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
var webpack = require('webpack');
2+
var ExtractTextPlugin = require('extract-text-webpack-plugin');
3+
const pkg = require('../package.json');
4+
5+
//包版本(ES6或者ES5)
6+
let moduleVersion = process.env.moduleVersion || "es5";
7+
8+
//打包公共配置
9+
module.exports = {
10+
11+
moduleVersion: moduleVersion,
12+
13+
mode: "production",
14+
//页面入口文件配置
15+
entry: {},
16+
17+
output: function (libName, productName) {
18+
let fileName = moduleVersion === 'es6' ? `${productName}-${moduleVersion}` : `${productName}`;
19+
return {
20+
path: `${__dirname}/../dist/${libName}/`,
21+
filename: `${fileName}.js`
22+
}
23+
},
24+
25+
//是否启用压缩
26+
optimization: {
27+
minimize: false
28+
},
29+
//不显示打包文件大小相关警告
30+
performance: {
31+
hints: false
32+
},
33+
34+
//其它解决方案配置
35+
resolve: {
36+
extensions: ['.js', '.json', '.css']
37+
},
38+
39+
externals: {
40+
'echarts': 'function(){try{return echarts}catch(e){return {}}}()',
41+
'mapv': "function(){try{return mapv}catch(e){return {}}}()",
42+
'elasticsearch': 'function(){try{return elasticsearch}catch(e){return {}}}()'
43+
},
44+
45+
module: {
46+
rules: {
47+
img: {
48+
//图片小于80k采用base64编码
49+
test: /\.(png|jpg|jpeg|gif|woff|woff2|svg|eot|ttf)$/,
50+
use: [{
51+
loader: 'url-loader',
52+
options: {
53+
limit: 80000
54+
}
55+
}]
56+
},
57+
58+
eslint: {
59+
test: [/\.js$/],
60+
exclude: /node_modules/,
61+
enforce: 'pre',
62+
loader: 'eslint-loader',
63+
options: {
64+
failOnError: true
65+
}
66+
},
67+
68+
css: {
69+
test: /\.css$/,
70+
use: ExtractTextPlugin.extract({
71+
use: {
72+
loader: 'css-loader'
73+
}
74+
})
75+
}
76+
}
77+
},
78+
79+
80+
bannerInfo: function (libName) {
81+
return `
82+
${libName}.(${pkg.homepage})
83+
Copyright© 2000 - 2018 SuperMap Software Co.Ltd
84+
license: ${pkg.license}
85+
version: v${pkg.version}
86+
`;
87+
},
88+
89+
plugins: function (libName, productName) {
90+
return [
91+
new webpack.BannerPlugin(this.bannerInfo(productName)),
92+
new ExtractTextPlugin(`./${productName}.css`),
93+
new webpack.NoEmitOnErrorsPlugin()
94+
]
95+
}
96+
};

build/webpack.config.classic.js

Lines changed: 34 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,45 @@
1-
var webpack = require('webpack');
2-
var pkg = require('../package.json');
3-
var banner = `
4-
iclient-classic.(${pkg.homepage})
5-
Copyright© 2000-2017 SuperMap Software Co. Ltd
6-
license: ${pkg.license}
7-
version: v${pkg.version}
8-
`;
1+
const configBase = require("./webpack.config.base");
2+
//端名
3+
const libName = "classic";
4+
//产品包名
5+
const productName = "iclient-classic";
6+
97

108
module.exports = {
11-
mode:"production",
9+
mode: configBase.mode,
1210
//页面入口文件配置
13-
entry: {},
11+
entry: configBase.entry,
1412
//入口文件输出配置
15-
output: {
16-
path: __dirname + '/../dist',
17-
filename: 'iclient-classic.js'
18-
},
19-
//不显示打包文件大小相关警告
20-
performance:{
21-
hints: false
22-
},
13+
output: configBase.output(libName, productName),
2314
//是否启用压缩
24-
optimization: {
25-
minimize:false
26-
},
27-
15+
optimization: configBase.optimization,
16+
//不显示打包文件大小相关警告
17+
performance: configBase.performance,
2818
//其它解决方案配置
29-
resolve: {
30-
extensions: ['.js', '.json', '.css']
31-
},
32-
externals: {
33-
'echarts': 'function(){try{return echarts}catch(e){return {}}}()',
34-
'mapv': "function(){try{return mapv}catch(e){return {}}}()",
35-
'elasticsearch': 'function(){try{return elasticsearch}catch(e){return {}}}()'
36-
},
19+
resolve: configBase.resolve,
20+
externals: Object.assign({}, configBase.externals),
3721
module: {
38-
rules: [{
39-
test: [/\.js$/],
40-
exclude: /node_modules/,
41-
enforce: 'pre',
42-
loader: 'eslint-loader',
43-
options: {
44-
failOnError: true
45-
}
46-
}, {
47-
test: /\.js/,
48-
loader: 'babel-loader',
49-
query: {
50-
presets: ['es2015']
22+
rules: (function () {
23+
let moduleRules = [];
24+
moduleRules.push(configBase.module.rules.eslint);
25+
if (configBase.moduleVersion === "es5") {
26+
//打包为es5相关配置
27+
moduleRules.push({
28+
test: /\.js/,
29+
loader: 'babel-loader',
30+
query: {
31+
presets: ['es2015']
32+
}
33+
});
34+
5135
}
52-
}]
36+
return moduleRules
37+
})()
5338
},
54-
plugins: [
55-
new webpack.BannerPlugin(banner),
56-
new webpack.NoEmitOnErrorsPlugin()
57-
]
39+
plugins: (function () {
40+
let plugins = [...configBase.plugins(libName, productName)];
41+
plugins.splice(1, 1);
42+
return plugins;
43+
})()
5844

5945
};

build/webpack.config.leaflet.js

Lines changed: 40 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,56 @@
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

128
module.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: /\.(png|jpg|jpeg|gif|woff|woff2|svg|eot|ttf)$/,
50-
use: [{
51-
loader: 'url-loader',
52-
options: {
53-
limit: 80000
54-
}
55-
}]
56-
}, {
57-
test: [/\.js$/],
58-
exclude: /node_modules/,
59-
enforce: 'pre',
60-
loader: 'eslint-loader',
61-
options: {
62-
failOnError: true
63-
}
64-
}, {
65-
test: [/\.js$/],
66-
exclude: /setImmediate | webgl-debug/,
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: [/\.js$/],
38+
exclude: /setImmediate | webgl-debug/,
39+
loader: 'babel-loader',
40+
options: {
41+
presets: ['es2015']
42+
}
43+
});
44+
//兼容es3相关配置
45+
moduleRules.push({
46+
test: /\.js$/,
47+
enforce: "post",
48+
loaders: ['es3ify-loader']
49+
});
7050
}
71-
}, {
72-
test: /\.js$/,
73-
enforce: "post",
74-
loaders: ['es3ify-loader']
75-
}, {
76-
test: /\.css$/,
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

Comments
 (0)