提交 31dad9fa 编写于 作者: L lang

Use webpack to build echarts

上级 0815d889
......@@ -2,6 +2,7 @@
/test
/map/tool
/theme/tool
/theme/thumb
todo
npm-debug.log
......
此差异已折叠。
......@@ -2,20 +2,29 @@ var glob = require('glob');
var fsExtra = require('fs-extra');
var esprima = require('esprima');
function run(cb) {
glob('**/*.js', {
cwd: __dirname + '/../src/'
}, function (err, files) {
files.forEach(function (filePath) {
var code = parse(fsExtra.readFileSync(
__dirname + '/../src/' + filePath, 'utf-8'));
code = code.replace(/require\(([\'"])zrender\//g, 'require($1zrender/lib/');
fsExtra.outputFileSync(
__dirname + '/../lib/' + filePath,
code, 'utf-8');
});
glob('**/*.js', {
cwd: __dirname + '/../src/'
}, function (err, files) {
files.forEach(function (filePath) {
var code = parse(fsExtra.readFileSync(
__dirname + '/../src/' + filePath, 'utf-8'));
code = code.replace(/require\(([\'"])zrender\//g, 'require($1zrender/lib/');
fsExtra.outputFileSync(
__dirname + '/../lib/' + filePath,
code, 'utf-8');
cb && cb();
});
});
}
if (require.main === module) {
run();
}
else {
module.exports = run;
}
var MAGIC_DEPS = {
'exports' : true,
......@@ -118,14 +127,14 @@ function getFactory(args){
function getBody(raw, factoryBody, useStrict){
var returnStatements = factoryBody.body.filter(function(node){
var returnStatement = factoryBody.body.filter(function(node){
return node.type === 'ReturnStatement';
});
})[0];
var body = '';
var bodyStart = useStrict? useStrict.expression.range[1] + 1 : factoryBody.range[0] + 1;
var bodyStart = useStrict ? useStrict.expression.range[1] + 1 : factoryBody.range[0] + 1;
if (returnStatements) {
if (returnStatement) {
body += raw.substring( bodyStart, returnStatement.range[0] );
// "return ".length === 7 so we add "6" to returnStatement start
body += 'module.exports ='+ raw.substring( returnStatement.range[0] + 6, factoryBody.range[1] - 1 );
......
#!/bin/bash
rm -r ../dist
node r.js -o config/echarts.simple.js
node optimize.js -m simple
node r.js -o config/echarts.common.js
node optimize.js -m common
node r.js -o config/echarts.js
node optimize.js -m all
node r.js -o config/dataTool.js
node r.js -o config/bmap.js
cd ../
rm -r dist
npm run prepublish
webpack
webpack -p
webpack --config extension/webpack.config.js
webpack --config extension/webpack.config.js -p
\ No newline at end of file
({
baseUrl: '../',
name: 'echarts',
paths: {
extension: '../extension',
echarts: '../extension/echarts'
},
wrap: {
startFile: [
'../wrap/startExtension.js',
'../wrap/nut.js'
],
end: 'require("extension/bmap/bmap") }));'
},
include:[
'extension/bmap/bmap'
],
out: '../../dist/extension/bmap.js'
})
\ No newline at end of file
({
baseUrl: '../',
name: 'echarts',
paths: {
extension: '../extension',
echarts: '../extension/echarts'
},
wrap: {
startFile: [
'../wrap/startDataTool.js',
'../wrap/nut.js'
],
endFile: [
'../wrap/endDataTool.js'
]
},
include:[
'extension/dataTool/prepareBoxplotData',
'extension/dataTool/gexf'
],
out: '../../dist/extension/dataTool.js'
})
\ No newline at end of file
({
baseUrl: '../',
optimize: 'none',
name: 'echarts',
packages: [
{
name: 'zrender',
location: '../../zrender/src',
main: 'zrender'
},
{
name: 'echarts',
location: '../src',
main: 'echarts'
}
],
include:[
'echarts/chart/line',
'echarts/chart/bar',
'echarts/chart/pie',
'echarts/chart/scatter',
'echarts/component/tooltip',
'echarts/component/legend',
'echarts/component/grid',
'echarts/component/title',
'echarts/component/markPoint',
'echarts/component/markLine',
'echarts/component/dataZoom',
'echarts/component/toolbox',
'zrender/vml/vml'
],
out: '../../dist/echarts.common.js'
})
\ No newline at end of file
({
baseUrl: '../',
optimize: 'none',
name: 'echarts',
packages: [
{
name: 'zrender',
location: '../../zrender/src',
main: 'zrender'
},
{
name: 'echarts',
location: '../src',
main: 'echarts'
}
],
include:[
'echarts/chart/line',
'echarts/chart/bar',
'echarts/component/grid',
'echarts/chart/pie',
'echarts/chart/scatter',
'echarts/component/tooltip',
'echarts/component/polar',
'echarts/chart/radar',
'echarts/component/legend',
'echarts/chart/map',
'echarts/chart/treemap',
'echarts/chart/graph',
'echarts/chart/gauge',
'echarts/chart/funnel',
'echarts/chart/parallel',
'echarts/chart/sankey',
'echarts/chart/boxplot',
'echarts/chart/candlestick',
'echarts/chart/effectScatter',
'echarts/chart/lines',
'echarts/chart/heatmap',
'echarts/component/geo',
'echarts/component/parallel',
'echarts/component/title',
'echarts/component/dataZoom',
'echarts/component/visualMap',
'echarts/component/markPoint',
'echarts/component/markLine',
'echarts/component/timeline',
'echarts/component/toolbox',
'zrender/vml/vml'
],
out: '../../dist/echarts.js'
})
\ No newline at end of file
({
baseUrl: '../',
optimize: 'none',
name: 'echarts',
packages: [
{
name: 'zrender',
location: '../../zrender/src',
main: 'zrender'
},
{
name: 'echarts',
location: '../src',
main: 'echarts'
}
],
include:[
'echarts/chart/line',
'echarts/chart/bar',
'echarts/chart/pie',
'echarts/component/grid'
],
out: '../../dist/echarts.simple.js'
})
\ No newline at end of file
此差异已折叠。
module.exports = {
entry: './amd2common.js',
target: 'node',
output: {
filename: 'amd2common.bundle.js'
},
node: {
__dirname: false,
__filename: false
}
}
\ No newline at end of file
var echarts = require('echarts');
/** for: ${parts} as ${mod} */
require("${mod}");
/** /for */
return echarts;
}));
exports.dataTool = echarts.dataTool = {
quantile: require('extension/dataTool/quantile'),
prepareBoxplotData: require('extension/dataTool/prepareBoxplotData'),
gexf: require('extension/dataTool/gexf')
};
}));
var require, define;
(function () {
var mods = {};
define = function (id, deps, factory) {
// In case like
// define('echarts/model/globalDefault', {...});
if (arguments.length === 2) {
factory = deps;
deps = [];
if (typeof factory !== 'function') {
var configObj = factory;
factory = function () { return configObj; };
}
}
mods[id] = {
id: id,
deps: deps,
factory: factory,
defined: 0,
exports: {},
require: createRequire(id)
};
};
require = createRequire('');
function normalize(id, baseId) {
if (!baseId) {
return id;
}
if (id.indexOf('.') === 0) {
var basePath = baseId.split('/');
var namePath = id.split('/');
var baseLen = basePath.length - 1;
var nameLen = namePath.length;
var cutBaseTerms = 0;
var cutNameTerms = 0;
pathLoop: for (var i = 0; i < nameLen; i++) {
switch (namePath[i]) {
case '..':
if (cutBaseTerms < baseLen) {
cutBaseTerms++;
cutNameTerms++;
}
else {
break pathLoop;
}
break;
case '.':
cutNameTerms++;
break;
default:
break pathLoop;
}
}
basePath.length = baseLen - cutBaseTerms;
namePath = namePath.slice(cutNameTerms);
return basePath.concat(namePath).join('/');
}
return id;
}
function createRequire(baseId) {
var cacheMods = {};
function localRequire(id, callback) {
if (typeof id === 'string') {
var exports = cacheMods[id];
if (!exports) {
exports = getModExports(normalize(id, baseId));
cacheMods[id] = exports;
}
return exports;
}
else if (id instanceof Array) {
callback = callback || function () {};
callback.apply(this, getModsExports(id, callback, baseId));
}
};
return localRequire;
}
function getModsExports(ids, factory, baseId) {
var es = [];
var mod = mods[baseId];
for (var i = 0, l = Math.min(ids.length, factory.length); i < l; i++) {
var id = normalize(ids[i], baseId);
var arg;
switch (id) {
case 'require':
arg = (mod && mod.require) || require;
break;
case 'exports':
arg = mod.exports;
break;
case 'module':
arg = mod;
break;
default:
arg = getModExports(id);
}
es.push(arg);
}
return es;
}
function getModExports(id) {
var mod = mods[id];
if (!mod) {
throw new Error('No ' + id);
}
if (!mod.defined) {
var factory = mod.factory;
var factoryReturn = factory.apply(
this,
getModsExports(mod.deps || [], factory, id)
);
if (typeof factoryReturn !== 'undefined') {
mod.exports = factoryReturn;
}
mod.defined = 1;
}
return mod.exports;
}
}());
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define([], factory);
} else if (typeof module === 'object' && module.exports) {
// Node. Does not work with strict CommonJS, but
// only CommonJS-like environments that support module.exports,
// like Node.
module.exports = factory();
} else {
// Browser globals (root is window)
root.echarts = factory();
}
}(this, function () {
\ No newline at end of file
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['exports', 'echarts'], factory);
} else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
// CommonJS
factory(exports, require('echarts'));
} else {
// Browser globals
factory({}, root.echarts);
}
}(this, function(exports, echarts) {
\ No newline at end of file
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['exports', 'echarts'], factory);
} else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
// CommonJS
factory(exports, require('echarts'));
} else {
// Browser globals
factory({}, root.echarts);
}
}(this, function(exports, echarts) {
\ No newline at end of file
define(function (require) {
return {
var echarts = require('echarts');
echarts.dataTool = {
version: '1.0.0',
gexf: require('./gexf'),
prepareBoxplotData: require('./prepareBoxplotData')
};
return echarts.dataTool;
});
\ No newline at end of file
var PROD = process.argv.indexOf('-p') >= 0;
module.exports = {
entry: {
'bmap': __dirname + '/../extension/bmap/bmap.js',
'dataTool': __dirname + '/../extension/dataTool'
},
output: {
libraryTarget: 'umd',
library: ['echarts', '[name]'],
path: __dirname + '/../dist/extension',
filename: PROD ? '[name].min.js' : '[name].js'
},
externals: {
'echarts': 'echarts'
}
};
\ No newline at end of file
/**
* Export echarts as CommonJS module
*/
module.exports = require('./lib/echarts');
require('./lib/chart/line');
require('./lib/chart/bar');
require('./lib/chart/pie');
require('./lib/chart/scatter');
require('./lib/component/tooltip');
require('./lib/component/legend');
require('./lib/component/grid');
require('./lib/component/title');
require('./lib/component/markPoint');
require('./lib/component/markLine');
require('./lib/component/dataZoom');
require('./lib/component/toolbox');
require('zrender/lib/vml/vml');
\ No newline at end of file
/**
* Export echarts as CommonJS module
*/
module.exports = require('./lib/echarts');
require('./lib/chart/line');
require('./lib/chart/bar');
require('./lib/chart/pie');
require('./lib/component/grid');
\ No newline at end of file
......@@ -32,18 +32,16 @@
"url": "https://github.com/ecomfe/echarts.git"
},
"scripts": {
"prepublish": "node build/amd2common.bundle.js"
"prepublish": "node build/amd2common.js"
},
"dependencies": {
"zrender": "^3.0.3"
},
"devDependencies": {
"zrender": "^3.0.3",
"escodegen": "^1.8.0",
"esprima": "^2.7.2",
"estraverse": "^4.1.1",
"etpl": "^3.0.1",
"optimist": "^0.6.1",
"uglify-js": "^2.6.1"
"fs-extra": "^0.26.5",
"glob": "^7.0.0",
"webpack": "^1.12.13",
"zrender": "^3.0.3"
}
}
var PROD = process.argv.indexOf('-p') >= 0;
module.exports = {
entry: {
'echarts': __dirname + '/index.js',
'echarts.simple': __dirname + '/index.simple.js',
'echarts.common': __dirname + '/index.common.js'
},
output: {
libraryTarget: 'umd',
library: 'echarts',
path: __dirname + '/dist',
filename: PROD ? '[name].min.js' : '[name].js'
}
};
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册