使用rollup构建ECharts遇到的问题

公孙康
• 阅读 2512

最近在用rollup打包构建echarts文件的时候出现了很多问题,终于最后跑通出现了折线图,在此记录一下,后面再次遇到问题便于回顾。

1、准备工作:创建自己的工程和安装echarts

使用命令行创建自己的工程

mkdir myLine
cd myLine

myLine 目录下使用命令行,初始化工程的 npm 环境并安装 echarts(这里前提是您已经安装了 npm)

npm init
npm install echarts --save
2、在 myLine 目录下使用 npm 安装 rollup
npm install rollup --save-dev
npm install rollup-plugin-node-resolve --save-dev
npm install rollup-plugin-uglify --save-dev
npm install rollup-plugin-commonjs --save-dev 
npm install rollup-plugin-replace --save-dev
3、接下来创建项目 JS 文件 myLine/line.js 来绘制图表,内容为
// line.js

// 引入 echarts 主模块,官方文档引入如下第一行,但是会有问题,因此修改为现如今这种路径
// import * as echarts from 'echarts/slib/echarts';
import * as echarts from 'echarts';
// 引入折线图。
import 'echarts/src/chart/line';
// 引入提示框组件、标题组件、工具箱组件。
import 'echarts/src/component/tooltip';
import 'echarts/src/component/title';
import 'echarts/src/component/toolbox';
// 基于准备好的dom,初始化 echarts 实例并绘制图表。
echarts.init(document.getElementById('main')).setOption({
    title: {text: 'Line Chart'},
    tooltip: {},
    toolbox: {
        feature: {
            dataView: {},
            saveAsImage: {
                pixelRatio: 2
            },
            restore: {}
        }
    },
    xAxis: {},
    yAxis: {},
    series: [{
        type: 'line',
        smooth: true,
        data: [[12, 5], [24, 20], [36, 36], [48, 10], [60, 10], [72, 20]]
    }]
});
4、对于不支持 ES Module 的浏览器而言,刚才创建的 myLine/line.js 还不能直接被网页引用并在浏览器中运行,需要进行构建。使用 rollup 构建前,需要创建它的配置文件 myLine/rollup.config.js,内容如下:

这里将import uglify from 'rollup-plugin-uglify'改为import {uglify} from 'rollup-plugin-uglify'
除此之外还引入了rollup-plugin-replace插件

// rollup.config.js

// 这个插件用于在 `node_module` 文件夹(即 npm 用于管理模块的文件夹)中寻找模块。比如,代码中有
// `import 'echarts/lib/chart/line';` 时,这个插件能够寻找到
// `node_module/echarts/lib/chart/line.js` 这个模块文件。
import nodeResolve from 'rollup-plugin-node-resolve';
// 用于压缩构建出的代码。
// import uglify from 'rollup-plugin-uglify';这是官网的写法会报错
import {uglify} from 'rollup-plugin-uglify';
// 用于多语言支持(如果不需要可忽略此 plugin)。
// import ecLangPlugin from 'echarts/build/rollup-plugin-ec-lang';
import commonjs from 'rollup-plugin-commonjs';
import replace from 'rollup-plugin-replace';

export default {
   //  name: 'myProject',
    // 入口代码文件,就是刚才所创建的文件。
    input: './line.js',
    plugins: [
        nodeResolve(),
        // ecLangPlugin({lang: 'en'}),
        // 消除代码中的 __DEV__ 代码段,从而不在控制台打印错误提示信息。
        uglify(),
        commonjs(),
        replace({
         'process.env.NODE_ENV': JSON.stringify('env')
       })
    ],
    output: {
        // 以 UMD 格式输出,从而能在各种浏览器中加载使用。
        format: 'umd',
        // 输出 source map 便于调试。
        sourcemap: true,
        // 输出文件的路径。
        file: 'lib/line.min.js'
    }<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>line chart</title>
</head>
<body>
    <!-- 为 echarts 准备一个具备大小(宽高)的Dom。 -->
    <div id="main" style="width: 600px;height:400px;"></div>
    <!-- 引入刚才构建好的文件。 -->
    <script src="lib/line.min.js"></script>
</body>
</html>
5、然后在 myLine 目录下使用命令行,构建工程代码 myLine/line.js

使用.\node_modules.bin\rollup -c命令构建line.js。在Windows环境下,路径符号需要用反斜杠。

6、构建生成的 myLine/lib/line.min.js 文件包括了工程代码和 echarts 代码,并且仅仅包括我们所需要的图和组件,并且可以在浏览器中使用。我们可以用一个示例页面来测试一下,创建文件 myLine/line.html,内容如下:
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>line chart</title>
</head>
<body>
    <!-- 为 echarts 准备一个具备大小(宽高)的Dom。 -->
    <div id="main" style="width: 600px;height:400px;"></div>
    <!-- 引入刚才构建好的文件。 -->
    <script src="lib/line.min.js"></script>
</body>
</html>
7、在浏览器里打开 myLine/line.html 则会得到如下效果:

使用rollup构建ECharts遇到的问题

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
vue + echart 实现中国地图 和 省市地图(可切换省份)
一.中国地图1.先导入echarts,然后再main.js里引入echarts//引入echartsimportechartsfrom'echarts'Vue.prototype.$echartsecharts//还要特别引入china.json,这样中国地图才会出现,不然只会出现右下角的南海诸岛importchinafr
待兔 待兔
1年前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
达里尔 达里尔
3年前
在Vue项目里遇到多次渲染echart组件只显示一个的问题
症状vue项目echarts中出现“Thereisachartinstancealreadyinitializedonthedom.”的警告Vue页面多次渲染echarts封装的组件但只出现一个(如果这个为主要症状)原因:1.有可能是id冲突,如果你注册了N个组件,但是由于是复制粘贴过来的,导致你所有的组件文件echarts容器
徐小夕 徐小夕
4年前
前端组件/库打包利器rollup使用与配置实战
目前主流的前端框架vue和react都采用rollup来打包,为了探索rollup的奥妙,接下来就让我们一步步来探索,并基于rollup搭建一个库打包脚手架,来发布自己的库和组件。(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/16cb1c297071015523fb08d9e0f
马丁路德 马丁路德
4年前
微信小程序---使用Echarts和分包
微信小程序中使用Echarts和分包假期虽然结束了,但是它以另外一种形式展示我们身上(摸摸自己的小肚子)。在小程序上以图形化显示数据就是分给我的假期预研任务,查了一下网上大佬们的文章了解到了Ucharts,F2,Wxcharts和Echarts,只尝试了F2和Echarts,由于Echarts的最近更新最近和我对Echa
Stella981 Stella981
3年前
Echarts阴影点击事件获得当前柱状图的索引值方法
最近在使用百度的echarts写股票的K线图,刚开始用遇到大堆的问题,光是为了解决这些问题都花了我一整天时间。两个论坛都发帖了,没人理。还是靠自己吧。以下代码只写了关键片段,//什么在option外面的变量varclickIndex;option{//配置信息tooltip:{
Stella981 Stella981
3年前
Echarts柱状图实现不同颜色渐变色
第一次写文,只是想记录一下自己平时发现的小功能,这篇主要是实现echarts柱状图,每个柱子实现不同颜色的渐变色,也是第一次接触echarts,后台使用ssm,前台是extjs,直接上效果图!(https://oscimg.oschina.net/oscnet/d7e04daefbe994516a605f1d19dc5909504.png)直接上
Wesley13 Wesley13
3年前
JS 折线图
JS折线图 echarts折线图。需要引入:echarts.min.js<scriptsrc"${ctxStatic}/common/echarts.min.js"charset"utf8"type"text/javascript"</scriptJS调用后台方法,得到数据Map<String,Obj
Stella981 Stella981
3年前
Echarts词云图
今天使用Echarts写了个词云图,之前使用pycharts生成的html就是echarts。主要代码如下,另外Echarts需要到https://www.echartsjs.com/下载,开发时使用.js文件即可。(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.echarts
Stella981 Stella981
3年前
Ionic2 集成ECharts
在群里看到有人问怎么在Ionic2中集成ECharts来显示图表。当时答应说写个blog,简单写下步骤。在TypeScript中如果要使用第三方库,必须要有d.ts,也就是定义文件,没有这个文件的话TypeScript是认不出来的,无法编译通过。下面以百度的ECharts图表为例,演示一下使用第三方库的用法。1、安装ECHARTS首先需要使用np
Stella981 Stella981
3年前
Faied to run MSBuild commond CmakeError
问题1:FaiedtorunMSBuildcommondCmakeError想要用cmake编译一个slam的工程,因为是新电脑,编译的时候遇到了这个问题首先工程的cmake文件是没有问题的,因为我在以前的电脑上可以正常的编译可使用,而在这里却出现了问题,查看了资料后解决方法如下:我的cmake版本是cmake3.13,据说很多
公孙康
公孙康
Lv1
放下屠刀,立地成佛、救人一命,胜造七级浮屠。
文章
4
粉丝
0
获赞
0