Superset二次开发之webpack.config.js 功能模块解读

  • webpack.config.js 

 Webpack 构建工具的核心配置文件,它定义了如何处理项目中的源代码,包括编译、转换、合并、分包、压缩等多个环节。

 

/* eslint-disable no-console */
/*** 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 fs = require('fs');
const path = require('path');
const webpack = require('webpack');
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
const CopyPlugin = require('copy-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
const SpeedMeasurePlugin = require('speed-measure-webpack-plugin');
const createMdxCompiler = require('@storybook/addon-docs/mdx-compiler-plugin');
const {WebpackManifestPlugin,getCompilerHooks,
} = require('webpack-manifest-plugin');
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const parsedArgs = require('yargs').argv;
const getProxyConfig = require('./webpack.proxy-config');
const packageConfig = require('./package');// input dir
const APP_DIR = path.resolve(__dirname, './');
// output dir
const BUILD_DIR = path.resolve(__dirname, '../superset/static/assets');
const ROOT_DIR = path.resolve(__dirname, '..');const {mode = 'development',devserverPort = 9000,measure = false,analyzeBundle = false,analyzerPort = 8888,nameChunks = false,
} = parsedArgs;
const isDevMode = mode !== 'production';
const isDevServer = process.argv[1].includes('webpack-dev-server');
const ASSET_BASE_URL = process.env.ASSET_BASE_URL || '';const output = {path: BUILD_DIR,publicPath: `${ASSET_BASE_URL}/static/assets/`,
};
if (isDevMode) {output.filename = '[name].[contenthash:8].entry.js';output.chunkFilename = '[name].[contenthash:8].chunk.js';
} else if (nameChunks) {output.filename = '[name].[chunkhash].entry.js';output.chunkFilename = '[name].[chunkhash].chunk.js';
} else {output.filename = '[name].[chunkhash].entry.js';output.chunkFilename = '[chunkhash].chunk.js';
}if (!isDevMode) {output.clean = true;
}const plugins = [new webpack.ProvidePlugin({process: 'process/browser.js',}),// creates a manifest.json mapping of name to hashed output used in template filesnew WebpackManifestPlugin({publicPath: output.publicPath,seed: { app: 'superset' },// This enables us to include all relevant files for an entrygenerate: (seed, files, entrypoints) => {// Each entrypoint's chunk files in the format of// {//   entry: {//     css: [],//     js: []//   }// }const entryFiles = {};Object.entries(entrypoints).forEach(([entry, chunks]) => {entryFiles[entry] = {css: chunks.filter(x => x.endsWith('.css')).map(x => `${output.publicPath}${x}`),js: chunks.filter(x => x.endsWith('.js')).map(x => `${output.publicPath}${x}`),};});return {...seed,entrypoints: entryFiles,};},// Also write manifest.json to disk when running `npm run dev`.// This is required for Flask to work.writeToFileEmit: isDevMode && !isDevServer,}),// expose mode variable to other modulesnew webpack.DefinePlugin({'process.env.WEBPACK_MODE': JSON.stringify(mode),'process.env.REDUX_DEFAULT_MIDDLEWARE':process.env.REDUX_DEFAULT_MIDDLEWARE,}),new CopyPlugin({patterns: ['package.json',{ from: 'src/assets/images', to: 'i

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/777581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 的chatGPT API小例子

例子1 Simple from openai import OpenAIclient OpenAI(api_key"xxxxxx",base_url"https://api.chatanywhere.tech/v1" )completion client.chat.completions.create(model"gpt-3.5-turbo",messages[{"role": "system", …

文件上传失败原因分析与解决

图片文件上传失败 问题描述&#xff1a;在前端开发时&#xff0c;需要通过表单元素上传图片或其他文本&#xff0c;但是上传不成功&#xff0c;后端接口也没问题 html <!--onChange用来绑定数据 handleUpload用来提交数据--><form onSubmit{handleUpload}><…

TitanIDE与传统 IDE 比较

与传统IDE的比较 TitanIDE 和传统 IDE 属于不同时代的产物&#xff0c;在手工作坊时代&#xff0c;一切都是那么的自然&#xff0c;开发者习惯 Windows 或 MacOS 原生 IDE。不过&#xff0c;随着时代的变迁&#xff0c;软件行业已经步入云原生时代&#xff0c;TitanIDE 是顺应…

PhpStorm 2023 for Mac/Win:开启PHP集成开发新纪元,让编程更高效更智能

在数字时代的浪潮中&#xff0c;PHP作为一种广泛应用的服务器端脚本语言&#xff0c;其重要性不言而喻。而要在PHP的世界里游刃有余&#xff0c;一款强大的集成开发环境&#xff08;IDE&#xff09;是必不可少的。PhpStorm 2023&#xff0c;正是这样一款能够助您一臂之力的编程…

Github万星项目lobe-chat,连接GPT4GPTs,平替chatgpt-plus

简介 Lobe Chat - 一个开源、高性能的聊天机器人框架&#xff0c;支持语音合成、多模态和可扩展的函数调用插件系统。支持一键免费部署您的私人 ChatGPT/LLM Web 应用程序。 项目地址&#xff1a; GitHub - lobehub/lobe-chat: &#x1f92f; Lobe Chat - an open-source, mo…

第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(补题)

文章目录 1 日期统计2 01串的熵3 冶炼金属4 飞机降落5 接龙数列6 岛屿个数7 子串简写8 整数删除9 景区导游10 砍树 前言&#xff1a;时隔一年&#xff0c;再次做这套题(去年参赛选手)&#xff0c;差点道心不稳T_T&#xff0c;故作此补题&#xff01; 1 日期统计 没写出来&…

将当前mac地址转换为整数加n后重新转换为Mac地址

将当前Mac转换为整数加1后重新转换为Mac&#xff0c;就解决了进位问题 #include <stdio.h> #include <stdlib.h> #include <string.h>// 将 MAC 地址转换为整数 unsigned long long mac_to_int(char *mac) {char mac_str[18];strcpy(mac_str, mac);char *ptr…

【React】onClick点击事件传参的4种方式

记录React onClick 点击事件传参的 4 种方式 方式一&#xff1a;使用内联箭头函数 import React, { MouseEvent } from "react";function App() {const handleClick (event: MouseEvent<HTMLButtonElement>, name: string) > {console.log(event)console.…

2024蓝桥杯每日一题(背包2)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一&#xff1a;包子凑数 试题二&#xff1a;砝码称重 试题三&#xff1a;倍数问题 试题一&#xff1a;包子称重 【题目描述】 小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有 N 种蒸笼&#xf…

解决 docker swarm 节点容器无法获取客户端真实IP

下载工具 https://github.com/sangbobo/docker-ingress-routing-daemon 下载代码 将docker-ingress-routing-daemon放到/usr/bin下 mv docker-ingress-routing-daemon chmod x docker-ingress-routing-daemon设置开启自启 vi /etc/systemd/system/dird.service填入内容 [U…

R语言做两次分类,再做两两T检验,最终输出均值和pvalue

1.输入文件&#xff1a; 2.代码&#xff1a; setwd("E:/R/Rscripts/rG4相关绘图")# 加载所需的库 library(tidyverse)# 读取CSV文件 data <- read.csv("box-cds-ABD-不同类型rg4-2.csv", stringsAsFactors FALSE)# 组合Type1和Type2&#xff1a;通过…

新装debian常用操作

时间ntp apt-get update apt-get install ntp #编辑配置 nano /etc/ntp.conf填写内容如下&#xff1a; server your-ntp-server #(可选&#xff09;如果您的网络中有本地的 NTP 服务器&#xff0c;您可以添加以下行以使用本地服务器 server your-local-ntp-server iburst #重…

unity 2D游戏使用navmashagent遇到的问题

问题描述&#xff1a; 在2D游戏中使用navmashagent来导航的时候&#xff0c;navmashagent会出现x,y轴旋转&#xff0c;且在代码aweak.start中重置依然用的问题。 解决方法 agent.updateRotation false; agent.updateUpAxis false; 解释以下这两个参数 updateRotation up…

新版 Redis 不再“开源”,对使用者都有哪些影响?

2024年3月20日&#xff0c;Redis Labs 的一个重大声明震惊了开源社区&#xff1a;从 Redis 7.4 版本开始&#xff0c;Redis 将不再遵循原有的 BSD 开源协议&#xff0c;而是转向 RSALv2 和 SSPLv1 的双重许可机制。这一变化标志着 Redis 在 OSI&#xff08;开放源代码促进会&am…

以Monkey为例全方位解析App压力测试的关键要点

概念解读&#xff1a; 以Monkey为例&#xff0c;全方位解析App压力测试的关键要点主要包括以下几个方面&#xff1a; 一、Monkey工具概述 Monkey是Android系统自带的一个命令行工具&#xff0c;用于生成伪随机用户事件流来对应用程序进行压力测试。通过发送大量的随机事件到…

大数据学习-2024/3/28-excel文件的读写操作

借助第三方模块:inxlrd,xlwt pip 第三方模块包管理工具 –> winr --> cmd --> 打开操作系统 –> python --> 查看默认的解释器版本 --> exit() –> pip list --> 查看第三方模块的列表 pip36 list --> 查看3.6版本安装的第三方模块列表 –> pip[…

iOS —— 初识KVO

iOS —— 初始KVO KVO的基础1. KVO概念2. KVO使用步骤注册KVO监听实现KVO监听销毁KVO监听 3. KVO基本用法4. KVO传值禁止KVO的方法 注意事项&#xff1a; KVO的基础 1. KVO概念 KVO是一种开发模式&#xff0c;它的全称是Key-Value Observing (观察者模式) 是苹果Fundation框架…

[LeetCode][LCR187]破冰游戏——约瑟夫环

题目 LCR 187. 破冰游戏 社团共有 num 位成员参与破冰游戏&#xff0c;编号为 0 ~ num-1。成员们按照编号顺序围绕圆桌而坐。社长抽取一个数字 target&#xff0c;从 0 号成员起开始计数&#xff0c;排在第 target 位的成员离开圆桌&#xff0c;且成员离开后从下一个成员开始计…

支持MacOS苹果操作系统的网卡你用过吗?

Marvell AQC113以太网控制器支持苹果操作系统&#xff08;MacOS&#xff09;&#xff0c;进一步扩展搭载了AQC113设备的应用领域。 众所周知&#xff0c;苹果操作系统应用生态完善&#xff0c;是业内备受瞩目的巨头级操作系统&#xff0c;其应用领域覆盖了游戏、社交、娱乐、工…

UE小:基于UE5的两种Billboard material(始终朝向相机材质)

本文档展示了两种不同的效果&#xff0c;分别是物体完全朝向相机和物体仅Z轴朝向相机。通过下面的演示和相关代码&#xff0c;您可以更加直观地理解这两种效果的差异和应用场景。 1. 完全朝向相机效果 此效果下&#xff0c;物体将完全面向相机&#xff0c;不论相机在哪个角度…