提交 831284e4 编写于 作者: L lang

Prepare for npm

上级 98eaa7ef
......@@ -165,4 +165,5 @@ pip-log.txt
node_modules
map/tool
/lib
todo
/build
/doc
/index.html
/test
npm-debug.log
此差异已折叠。
var glob = require('glob');
var fsExtra = require('fs-extra');
var esprima = require('esprima');
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');
});
});
var MAGIC_DEPS = {
'exports' : true,
'module' : true,
'require' : true
};
var SIMPLIFIED_CJS = ['require', 'exports', 'module'];
// Convert AMD-style JavaScript string into node.js compatible module
function parse (raw){
var output = '';
var ast = esprima.parse(raw, {
range: true,
raw: true
});
var defines = ast.body.filter(isDefine);
if ( defines.length > 1 ){
throw new Error('Each file can have only a single define call. Found "'+ defines.length +'"');
} else if (!defines.length){
return raw;
}
var def = defines[0];
var args = def.expression['arguments'];
var factory = getFactory( args );
var useStrict = getUseStrict( factory );
// do replacements in-place to avoid modifying the code more than needed
if (useStrict) {
output += useStrict.expression.raw +';\n';
}
output += raw.substring( 0, def.range[0] ); // anything before define
output += getRequires(args, factory); // add requires
output += getBody(raw, factory.body, useStrict); // module body
output += raw.substring( def.range[1], raw.length ); // anything after define
return output;
}
function getRequires(args, factory){
var requires = [];
var deps = getDependenciesNames( args );
var params = factory.params.map(function(param, i){
return {
name : param.name,
// simplified cjs doesn't have deps
dep : (deps.length)? deps[i] : SIMPLIFIED_CJS[i]
};
});
params.forEach(function(param){
if ( MAGIC_DEPS[param.dep] && !MAGIC_DEPS[param.name] ) {
// if user remaped magic dependency we declare a var
requires.push( 'var '+ param.name +' = '+ param.dep +';' );
} else if ( param.dep && !MAGIC_DEPS[param.dep] ) {
// only do require for params that have a matching dependency also
// skip "magic" dependencies
requires.push( 'var '+ param.name +' = require(\''+ param.dep +'\');' );
}
});
return requires.join('\n');
}
function getDependenciesNames(args){
var deps = [];
var arr = args.filter(function(arg){
return arg.type === 'ArrayExpression';
})[0];
if (arr) {
deps = arr.elements.map(function(el){
return el.value;
});
}
return deps;
}
function isDefine(node){
return node.type === 'ExpressionStatement' &&
node.expression.type === 'CallExpression' &&
node.expression.callee.type === 'Identifier' &&
node.expression.callee.name === 'define';
}
function getFactory(args){
return args.filter(function(arg){
return arg.type === 'FunctionExpression';
})[0];
}
function getBody(raw, factoryBody, useStrict){
var returnStatements = factoryBody.body.filter(function(node){
return node.type === 'ReturnStatement';
});
var body = '';
var bodyStart = useStrict? useStrict.expression.range[1] + 1 : factoryBody.range[0] + 1;
if (returnStatements) {
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 );
} else {
// if using exports or module.exports or just a private module we
// simply return the factoryBody content
body = raw.substring( bodyStart, factoryBody.range[1] - 1 );
}
return body;
}
function getUseStrict(factory){
return factory.body.body.filter(isUseStrict)[0];
}
function isUseStrict(node){
return node.type === 'ExpressionStatement' &&
node.expression.type === 'Literal' &&
node.expression.value === 'use strict';
}
{
"name": "echarts-builder",
"description": "ECharts Builder",
"version": "0.0.1",
"repository": "https://github.com/ecomfe/echarts",
"dependencies": {
"uglify-js": "2.5.0",
"escodegen": "1.7.0",
"esprima": "2.7.0",
"estraverse": "4.1.1",
"etpl": "3.0.1",
"optimist": "^0.6.1"
}
}
module.exports = {
entry: './amd2common.js',
target: 'node',
output: {
filename: 'amd2common.bundle.js'
},
node: {
__dirname: false,
__filename: false
}
}
\ No newline at end of file
/**
* Export echarts as CommonJS module
*/
module.exports = require('./lib/echarts');
// Import all charts and components
require('./lib/chart/line');
require('./lib/chart/bar');
require('./lib/chart/pie');
require('./lib/chart/scatter');
require('./lib/chart/radar');
require('./lib/chart/map');
require('./lib/chart/treemap');
require('./lib/chart/graph');
require('./lib/chart/gauge');
require('./lib/chart/funnel');
require('./lib/chart/parallel');
require('./lib/chart/sankey');
require('./lib/chart/boxplot');
require('./lib/chart/candlestick');
require('./lib/chart/effectScatter');
require('./lib/chart/lines');
require('./lib/chart/heatmap');
require('./lib/component/grid');
require('./lib/component/legend');
require('./lib/component/tooltip');
require('./lib/component/polar');
require('./lib/component/geo');
require('./lib/component/parallel');
require('./lib/component/title');
require('./lib/component/dataZoom');
require('./lib/component/visualMap');
require('./lib/component/markPoint');
require('./lib/component/markLine');
require('./lib/component/timeline');
require('./lib/component/toolbox');
require('zrender/lib/vml/vml');
{
"name": "echarts",
"version": "3.0.2",
"description": "A powerful charting and visualization library for browser",
"keywords": [
"visualization",
"canvas"
],
"homepage": "http://echarts.baidu.com/",
"author": [{
"name": "Kenner",
"email": "kener.linfeng@gmail.com"
}, {
"name": "Yi Shen",
"url": "https://github.com/pissang"
}, {
"name": "Shuang Su",
"url": "https://github.com/100pah"
}],
"contributors": [{
"name": "erik",
"email": "errorrik@gmail.com"
}],
"repository": {
"type": "git",
"url": "https://github.com/ecomfe/echarts.git"
"name": "echarts",
"version": "3.0.2",
"description": "A powerful charting and visualization library for browser",
"keywords": [
"visualization",
"canvas"
],
"homepage": "http://echarts.baidu.com/",
"author": [
{
"name": "Kenner",
"email": "kener.linfeng@gmail.com"
},
"main": "dist/echarts.min.js",
"browserify": "dist/echarts.min.js",
"files": [
"dist",
"src"
],
"devDependencies": {
"zrender": "~3.0.1"
{
"name": "Yi Shen",
"url": "https://github.com/pissang"
},
{
"name": "Shuang Su",
"url": "https://github.com/100pah"
}
],
"contributors": [
{
"name": "erik",
"email": "errorrik@gmail.com"
}
}
\ No newline at end of file
],
"repository": {
"type": "git",
"url": "https://github.com/ecomfe/echarts.git"
},
"scripts": {
"prepublish": "node build/amd2common.bundle.js"
},
"dependencies": {
"zrender": "^3.0.1"
},
"devDependencies": {
"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"
}
}
......@@ -14,7 +14,7 @@ define(function () {
// color: ['#bcd3bb', '#e88f70', '#edc1a5', '#9dc5c8', '#e1e8c8', '#7b7c68', '#e5b5b5', '#f0b489', '#928ea8', '#bda29a'],
// color: ['#cc5664', '#9bd6ec', '#ea946e', '#8acaaa', '#f1ec64', '#ee8686', '#a48dc1', '#5da6bc', '#b9dcae'],
// 深色
color: ['#c23531', '#314656', '#61a0a8', '#dd8668', '#91c7ae', '#6e7074', '#61a0a8', '#bda29a', '#44525d', '#c4ccd3'],
color: ['#c23531', '#314656', '#61a0a8', '#dd8668', '#91c7ae', '#6e7074', '#ca8622', '#bda29a', '#44525d', '#c4ccd3'],
// 默认需要 Grid 配置项
grid: {},
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册