/* * 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/**')] } }; };