Fork后自定义构建的ECharts如何正确导入?
自定义构建ECharts的正确导入方案
我之前折腾自定义ECharts构建的时候也踩过类似的坑,给你分享几个经过验证的导入方法,应该能解决你的问题:
一、直接导入构建后的产物文件
这是最直接的方式,前提是你已经通过ECharts官方构建工具(或者自己配置的构建流程)生成了完整的echarts.js或echarts.min.js文件。
假设你的自定义构建产物放在项目的src/libs/echarts-custom目录下,在组件里可以这样导入:
// 导入未压缩版,方便调试你的自定义代码 import * as echarts from './libs/echarts-custom/echarts.js'; // 或者导入压缩版,生产环境用 // import * as echarts from './libs/echarts-custom/echarts.min.js';
⚠️ 注意:这里的路径是相对路径,要根据你的组件文件和构建产物的位置调整,比如如果组件在src/components下,那路径应该是../libs/echarts-custom/echarts.js。
二、将自定义ECharts作为本地依赖引入
这种方式和你之前用import echarts from 'echarts'的体验最接近,步骤如下:
- 确保你的自定义构建产物目录里有
package.json(如果没有,可以手动创建一个,至少包含name和main字段,比如"main": "echarts.js") - 在项目根目录的
package.json里添加本地依赖:
"dependencies": { "echarts-custom": "file:./src/libs/echarts-custom" }
- 运行
npm install(或yarn install)把本地包链接到项目中 - 之后就可以像原来一样导入了:
import * as echarts from 'echarts-custom';
三、按需导入自定义构建的模块(如果用了按需构建)
如果你在构建的时候只打包了树图和必要的核心模块,那可以按需导入对应的部分:
// 导入核心模块 import * as echarts from './libs/echarts-custom/core.js'; // 导入你修改过的树图组件 import './libs/echarts-custom/chart/tree.js'; // 按需导入需要的组件,比如tooltip、legend等 import './libs/echarts-custom/component/tooltip.js';
顺便帮你排查下之前导入失败的可能原因:
- 导入
echarts/dist文件夹:dist目录一般是官方预构建的产物,你自定义构建的产物如果没放到这个目录,自然找不到正确的入口;就算放了,也需要确保目录里有package.json指定入口,或者直接导入具体文件。 - 导入
echarts源码文件夹:源码里的文件是未编译的ES6+代码,直接导入会有语法兼容性问题,而且没有打包后的完整模块结构,所以无法正常加载。 - 导入
echarts.min.js失败:大概率是路径写错了,或者构建时没有正确生成这个文件,可以检查文件是否存在,或者尝试导入未压缩的echarts.js先确认代码是否正常。
内容的提问来源于stack exchange,提问作者user1193256




