Superset 二次开发之自定义Viz Plugins(Hello World v2)

本文介绍了如何在Superset中进行二次开发,创建自定义图表插件。通过详细步骤,包括环境配置、Yeoman生成器使用、新图表插件的创建、初始化、构建过程,以及解决在开发过程中遇到的错误,如'BABEL_OUTPUT'命令找不到、browserlist数据库更新和模块未找到问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

环境:

  • Node.js 16
  • npm 7 or 8
  • 安装webpack

全局安装 npm install webpack -g

  • 安装eslint

superset-frontend> npm install eslint

1.Yeoman 生成器

全局安装Yo>   npm i -g yo

2.进入/superset-frontend/packages/generator-superset目录

npm i && npmlink

3.新建图表插件

  • superset-frontend目录下,新建文件夹temp ,新建superset-plugin-chart-hello-world

mkdir /superset-frontend/temp/superset-plugin-chart-hello-world

cd /superset-frontend/temp/superset-plugin-chart-hello-world

4.初始化插件 

> yo  然后一步一步回车即可,

5.开始build,执行

npm i --force

npm run build

6.向superset添加图表,执行(链接到已创建的图表)

  • 进入根目录/superset-frontend

superset-frontend> npm i -S temp\superset-plugin-chart-hello-world

  • superset-frontend/src/visualizations/presets/MainPreset.js
import { SupersetPluginChartHelloWorld } from 'superset-plugin-chart-hello-world';
new SupersetPluginChartHelloWorld().configure({ key: 'ext-hello-world' }),

7.运行

  • 前端

superset-frontend>npm run dev-server

  • 后台

 

superset> set FLASK_APP=superset

superset> superset init

superset> superset run -p 8088 --with-threads --reload --debugger

效果:

    

 

异常信息:

1.Error   Current environment doesn't provides some necessary feature this generator needs.

解决方案:

superset-frontend> cnpm install

运行yo 命令 显示 Available 说明可以进行下一步操作

 2. 'BABEL_OUTPUT' 不是内部或外部命令,也不是可运行的程序或批处理文件

解决方案:

修改superset-plugin-chart-hello-world/package.json

build-esm 和 dev 分别添加set 

 3. Please run npx update-browserlist-db@latest

解决方案

superset-frontend>npx update-browserlist-db@latest

4. Module not found:Error Can't resolve './locale'  (此异常或导致无法进入welcome页面)

 

解决方案:

修改 moment-with-locales.js 文件

aliasedRequire('./locale/' + name); 改为 aliasedRequire('moment/locale/' + name);

 

### Apache Superset 自定义开发中的 Webpack 配置 在 Apache Superset 中进行自定义开发时,Webpack 的配置对于前端资源管理至关重要。为了实现更快的重新构建速度并确保所有必要的文件被正确处理,在 `src` 文件夹内创建子目录是可行的做法[^1]。 仅位于 `src` 目录下的文件会被 Webpack 处理,这有助于加速重建过程。因此任何 JavaScript 和 CSS 资源都应当放置于该目录内部,否则这些文件不会被 Webpack 所识别和编译。 当涉及到具体修改 Webpack 配置来适应特定需求时,通常需要编辑项目根目录下名为 `webpack.config.js` 或者类似的配置文件。此文件包含了关于如何打包应用程序的所有指令。对于希望调整样式加载方式或是引入新的模块解析规则等情况来说,直接在此处做相应改动是最直接有效的方法之一。 另外值得注意的是,在现代版本的 Superset 中可能已经采用了更先进的工具链如 Vite 来替代传统意义上的 Webpack 构建流程;所以在着手之前最好先确认当前使用的构建工具是什么,并据此采取适当措施来进行定制化工作。 ```javascript // 示例:简单的 Webpack 插件扩展 const path = require('path'); module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') }, module: { rules: [ { test: /\.css$/, use: ['style-loader', 'css-loader'] } ] } }; ``` #### 修改 Webpack 配置的具体操作建议: - 定位到项目的根目录查找是否存在 `webpack.config.js` 文件; - 如果找不到,则可能是使用了其他构建工具,请查阅官方文档获取更多信息; - 对找到的配置文件按照实际需求添加或更改相应的 loader、plugin 设置; - 测试新设置是否生效,可以通过运行本地服务器查看页面效果变化验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aimmon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值