179 lines
5.8 KiB
JavaScript
179 lines
5.8 KiB
JavaScript
/*
|
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
* or more contributor license agreements. See the NOTICE file
|
|
* distributed with this work for additional information
|
|
* regarding copyright ownership. The ASF licenses this file
|
|
* to you under the Apache License, Version 2.0 (the
|
|
* "License"); you may not use this file except in compliance
|
|
* with the License. You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing,
|
|
* software distributed under the License is distributed on an
|
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
* KIND, either express or implied. See the License for the
|
|
* specific language governing permissions and limitations
|
|
* under the License.
|
|
*/
|
|
|
|
const nodeResolvePlugin = require('rollup-plugin-node-resolve');
|
|
const uglifyPlugin = require('rollup-plugin-uglify');
|
|
const ecRemoveDevPlugin = require('./rollup-plugin-ec-remove-dev');
|
|
const ecLangPlugin = require('./rollup-plugin-ec-lang');
|
|
const {resolve} = require('path');
|
|
const preamble = require('./preamble');
|
|
|
|
function getPathBasedOnECharts(path) {
|
|
return resolve(__dirname, '../', path);
|
|
}
|
|
|
|
function getPlugins({min, lang, sourcemap, removeDev, addBundleVersion}) {
|
|
let plugins = [];
|
|
|
|
removeDev && plugins.push(
|
|
ecRemoveDevPlugin({sourcemap})
|
|
);
|
|
|
|
lang && plugins.push(
|
|
ecLangPlugin({lang})
|
|
);
|
|
|
|
plugins.push(
|
|
nodeResolvePlugin()
|
|
);
|
|
|
|
addBundleVersion && plugins.push({
|
|
outro: function () {
|
|
return 'exports.bundleVersion = \'' + (+new Date()) + '\';';
|
|
}
|
|
});
|
|
|
|
min && plugins.push(uglifyPlugin({
|
|
compress: {
|
|
// Eliminate __DEV__ code.
|
|
// Currently, in uglify:
|
|
// `var vx; if(vx) {...}` can not be removed.
|
|
// `if (__DEV__) {...}` can be removed if `__DEV__` is defined as `false` in `global_defs`.
|
|
// 'global_defs': {
|
|
// __DEV__: false
|
|
// },
|
|
'dead_code': true
|
|
},
|
|
output: {
|
|
preamble: preamble.js
|
|
}
|
|
}));
|
|
|
|
return plugins;
|
|
}
|
|
|
|
/**
|
|
* @param {Object} [opt]
|
|
* @param {string} [opt.type=''] '' or 'simple' or 'common'
|
|
* @param {boolean} [opt.min=false]
|
|
* @param {string} [opt.lang=undefined] null/undefined/'' or 'en' or 'fi' or a file path.
|
|
* @param {string} [opt.input=undefined] If set, `opt.output` is required too, and `opt.type` is ignored.
|
|
* @param {string} [opt.output=undefined] If set, `opt.input` is required too, and `opt.type` is ignored.
|
|
* @param {boolean} [opt.sourcemap] If set, `opt.input` is required too, and `opt.type` is ignored.
|
|
* @param {boolean} [opt.removeDev]
|
|
* @param {string} [opt.format='umd'] If set, `opt.input` is required too, and `opt.type` is ignored.
|
|
* @param {boolean} [opt.addBundleVersion=false] Only for debug in watch, prompt that the two build is different.
|
|
*/
|
|
exports.createECharts = function (opt = {}) {
|
|
let min = opt.min;
|
|
let srcType = opt.type ? '.' + opt.type : '.all';
|
|
let postfixType = opt.type ? '.' + opt.type : '';
|
|
let postfixMin = min ? '.min' : '';
|
|
let postfixLang = opt.lang ? '-' + opt.lang.toLowerCase() : '';
|
|
let input = opt.input;
|
|
let output = opt.output;
|
|
let sourcemap = opt.sourcemap;
|
|
let format = opt.format || 'umd';
|
|
|
|
if (input != null || output != null) {
|
|
// Based on process.cwd();
|
|
input = resolve(input);
|
|
output = resolve(output);
|
|
}
|
|
else {
|
|
input = getPathBasedOnECharts(`./echarts${srcType}.js`);
|
|
output = getPathBasedOnECharts(`dist/echarts${postfixLang}${postfixType}${postfixMin}.js`);
|
|
}
|
|
|
|
return {
|
|
plugins: getPlugins(opt),
|
|
input: input,
|
|
legacy: true, // Support IE8-
|
|
output: {
|
|
name: 'echarts',
|
|
format: format,
|
|
sourcemap: sourcemap,
|
|
legacy: true, // Must be declared both in inputOptions and outputOptions.
|
|
file: output
|
|
},
|
|
watch: {
|
|
include: [
|
|
getPathBasedOnECharts('./src/**'),
|
|
getPathBasedOnECharts('./echarts*.js'),
|
|
getPathBasedOnECharts('../zrender/src/**')
|
|
]
|
|
}
|
|
};
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} [min=false]
|
|
*/
|
|
exports.createBMap = function (min) {
|
|
let postfix = min ? '.min' : '';
|
|
|
|
return {
|
|
plugins: getPlugins({min}),
|
|
input: getPathBasedOnECharts(`./extension-src/bmap/bmap.js`),
|
|
legacy: true, // Support IE8-
|
|
external: ['echarts'],
|
|
output: {
|
|
name: 'bmap',
|
|
format: 'umd',
|
|
sourcemap: !min,
|
|
legacy: true, // Must be declared both in inputOptions and outputOptions.
|
|
globals: {
|
|
// For UMD `global.echarts`
|
|
echarts: 'echarts'
|
|
},
|
|
file: getPathBasedOnECharts(`dist/extension/bmap${postfix}.js`)
|
|
},
|
|
watch: {
|
|
include: [getPathBasedOnECharts('./extension-src/bmap/**')]
|
|
}
|
|
};
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} [min=false]
|
|
*/
|
|
exports.createDataTool = function (min) {
|
|
let postfix = min ? '.min' : '';
|
|
return {
|
|
plugins: getPlugins({min}),
|
|
input: getPathBasedOnECharts(`./extension-src/dataTool/index.js`),
|
|
legacy: true, // Support IE8-
|
|
external: ['echarts'],
|
|
output: {
|
|
name: 'dataTool',
|
|
format: 'umd',
|
|
sourcemap: !min,
|
|
legacy: true, // Must be declared both in inputOptions and outputOptions.
|
|
globals: {
|
|
// For UMD `global.echarts`
|
|
echarts: 'echarts'
|
|
},
|
|
file: getPathBasedOnECharts(`dist/extension/dataTool${postfix}.js`)
|
|
},
|
|
watch: {
|
|
include: [getPathBasedOnECharts('./extension-src/dataTool/**')]
|
|
}
|
|
};
|
|
};
|