需要一组基于 DefinePlugin 常量的模块

2023-12-12

我正在尝试使用 Webpack 构建一个 Web 应用程序,但我在设计的特定部分遇到了一些困难 - 希望这里有人有做类似事情的经验(或者足够了解告诉我我是这样做完全错误)!

基本上,我们有一个 Angular 仪表板应用程序,它由一个“shell”(通用 UI、会话管理服务等)和一组模块(可以插入 shell 的应用程序的独立部分)组成。棘手的一点是,这个应用程序将分发给多个客户,每个客户都需要一组不同的模块,并且需要稍微不同的配置选项。

到目前为止,我已经在这方面取得了一些进展DefinePlugin在构建时作为常量加载到 JSON 配置文件中:

const envConfig = require(`./config/${yargs.argv.env || "dev"}`);

...

new webpack.DefinePlugin({        
    __ENV__: Object.keys(envConfig).reduce((obj, key) => {
        obj[key] = JSON.stringify(envConfig[key]);
        return obj;
    }, {})
})

然后我尝试使用动态 require 仅包含指定的模块,如下所示:

__ENV__.modules.map((id) => require(`./modules/${id}/index.ts`).default)

This sort of有效 - 正确的模块被加载,但 Webpack 没有意识到这一点__ENV__在运行时永远不会改变,因此构建文件本身包括all模块的数量,包括禁用的模块。显然,对于只想要单个模块的客户来说,这会不必要地增加文件大小,所以我对此并不满意。

因此,将其简化为一个简单的问题 -有没有一种简单的方法来加载基于DefinePlugin恒定(或者是否有其他方法来实现我想要实现的目标)?我觉得我一定错过了一些明显的东西。


你可以设置一个解析别名并根据客户进行配置。这将为您提供您想要的设置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要一组基于 DefinePlugin 常量的模块 的相关文章

  • 如何将值发布到输入框中?

    Intro I would like to get the current time after clicking at click and POST the value into input text box Note 假设包含引导样式表
  • 在上传之前预览图像 VUEjs [重复]

    这个问题在这里已经有答案了 我知道这个问题已经被问过 但我不知道如何在vuejs中使用代码 我尝试了很多但没有任何结果 我还添加了我的代码 有人可以帮帮我吗 这是我的代码 谢谢 html
  • 检测 Webkit/Chrome 中 HTML5 数字控件更改的事件?

    HTML5 为我们提供了一些新的输入元素 例如
  • Angular UI 路由器嵌套视图问题

    我在理解 Angular UI Router 嵌套视图的工作原理时遇到了一些问题 我的 stateProvider 看起来像这样 stateProvider state login url login views main template
  • 更新存储在 chrome 扩展本地存储中的对象

    我正在开发一个 chrome 扩展 我将存储服务器发送的对象 例如 我将收到 命令 id 1 类型 A 大小 B 优先级 C 如果我有一个数据库 我会将其作为表中的一行插入commands 使用 chrome storage 我将这些对象的
  • 如何将一个数组中的所有项目复制到另一个数组中?

    如何将数组的每个元素 其中元素是对象 复制到另一个数组中 以便它们完全独立 我不想更改一个数组中的元素来影响另一个数组 这里的关键是 数组中的条目是对象 并且 您不希望对一个数组中的对象的修改显示在另一个数组中 这意味着我们不仅需要将对象复
  • 正则表达式中连字符的这种用法有效吗?

    NB I only想知道它是否是正则表达式定义中未转义连字符的有效应用 它是not关于匹配电子邮件 连字符或反斜杠的含义 量词或其他任何内容的问题 另外 请注意 链接的答案并没有真正讨论转义 未转义连字符之间的有效性问题 通常我会像这样声明
  • 检查用户设备的 GPS 是否开启

    我正在使用 jQuery Mobile 和 PHP 开发一个应用程序 我没有使用 Phonegap 或其他框架 我需要找到用户的geolocation 如果用户设备的 GPS 关闭 那么我无法获取位置 现在我需要查找用户设备的 GPS 是否
  • jquery 中的函数返回未定义[重复]

    这个问题在这里已经有答案了 我在 jquery 中调用的函数返回未定义 我检查了该函数 当我对其进行调试时 它返回正确的数据 function addToPlaylist component type add to pl value pl
  • Firefox Addon 中的 JQuery 导致多个警告

    我在 Firefox 插件中使用 jquery 但我不断收到大量警告消息 如下所示 anonymous function does not always return a value System JS WARNING resource g
  • AngularJS templateUrl 与 template - 隔离范围

    我有以下指令 offerListSorters directive offersSorter myState templateCache function myState templateCache return scope control
  • 播放没有音频标签的音频

    是否可以在没有音频标签的情况下仅使用 javascript 播放音频 我通过 tinyMce 编辑器注入脚本 因为我无权访问网站的后端 并且它不支持客户端的音频标签 她只想要当您将鼠标悬停在图像上时发出简单的声音 我已经完成了所有设置 但是
  • 如何知道 .keyup() 是否是字符键(jQuery)

    如何知道 keyup 是否是字符键 jQuery input keyup function if key is a character such as a b A b c 5 3 2 etc not enter key or shift o
  • 从字节数组设置 img src

    我需要设置img src我在对象中拥有的字节数组的属性 img
  • 为什么 call 比 apply 快那么多?

    我想知道是否有人知道why call比apply 在 Chrome 中 速度大约快 4 倍 在 Firefox 中快 30 倍 我什至可以制作自定义原型 apply2 在大多数情况下 运行速度是apply 这个想法取自角度 Function
  • 在反应中访问回调内的 event.target

    我有以下课程片段 constructor props super props this timeout null search e gt clearTimeout this timeout this timeout setTimeout f
  • Google 地图 API - 地图未显示 - 没有错误

    我正在尝试将地图从 Google API 加载到 div 中 但是 地图未加载 并且没有输出任何错误 这是代码 google maps var geocoder map function codeAddress address geocod
  • Three.js点击单个粒子

    In this example http jsfiddle net agqq96bq 2 您可以看到 2 个可点击的粒子 但它们都受到点击的影响 另外 我只想检测粒子上的点击 而不将它们过滤出场景 像这儿 if intersects len
  • 将 html 文本框的值分配给 div 的标题

    line 1
  • 将引导程序弹出框保留在视口内

    我正在尝试使用带有按钮的侧边栏创建一个菜单 每个按钮都有一个指定的包含相关数据的弹出窗口 不幸的是 其中一个弹出窗口可能包含任意数量的行 并且在某些情况下它可能部分位于视口之外 See http jsfiddle net bfd9f 1 h

随机推荐

  • 如何启用cookie

    我有这个任务来读取 写入 启用 cookie 以便将用户名存储在变量中 然后写入 cookie 我的问题是代码的最后一部分似乎正在工作 但是用户名应该存储到变量中的第一部分不起作用 我可以看到当我运行代码时 前两个警报框没有显示 它应该以
  • React传单和react-leaflet-draw

    我正在尝试在传单地图上实现绘制功能 我创建了一个仅安装了react leaflet的新应用程序 使用npx create react app并安装了以下软件包 npm install React React dom 传单 npm 安装反应传
  • 复制到剪贴板在 Android 上不起作用

    使用此视图创建标准移动应用程序 public class DebugView extends View ListView
  • 为什么 sys.getrefcount 给出巨大的值?

    import sys a 10 b a print sys getrefcount a b 1 print sys getrefcount b output 22 614 我的Python解释器有问题吗 为什么这会给出像 614 这样巨大的
  • Android:Proguard 的推荐配置是什么?

    我正在为 Android 开发应用程序并使用 Proguard 来混淆代码 目前我正在使用 ProGuard 配置 optimizationpasses 5 dontusemixedcaseclassnames dontskipnonpub
  • MVC4 & IClientValidatable - 自动 AJAX 调用服务器端验证

    我正在寻找在 MVC4 中实现自定义客户端验证 我目前让它与标准属性配合得很好 例如我的模型中的这个 public class UploadedFiles StringLength 255 ErrorMessage Path is too
  • 使用 std::for_each 和 std::views::iota 的并行 for 循环

    我想使用以下方法为基于并行索引的 for 循环设置一个简单的解决方法std views 为了按顺序运行 代码如下所示 int main pseudo random numbers random device rd default rando
  • 使多维数组唯一的php

    我的数组如下所示 大批 1 gt stdClass Object id gt 225 user id gt 1 name gt Blue Quilted Leather Jacket by Minusey 499 2 gt stdClass
  • 添加行时数据表中的重复列

    我创建一个 DataTable 并将其绑定到 DataGrid 我的数据源由一个表 FooTable 组成 该表由一列 FooName 组成 以下代码运行良好 除了每次添加新行时 都会有一个重复的列填充相同的数据 我不知道如何摆脱它 请参阅
  • 使用 XPATH 或 CSS 选择器在 Selenium 中查找元素

    我试图在 C 中使用 Selenium Webdriver 查找元素 导入 已尝试以下代码但没有找到它 driver FindElement By XPath class menu bg ul li 3 Click driver FindE
  • 正确删除单例

    我有以下代码 我的类 h static MyMutex instanceMutex static MyClass getInstance static void deleteInstance 我的类 c MyMutex MyClass in
  • 卷曲发送内容长度标头时出现问题

    我需要将文件上传到 wupload 这是我的功能 public function doPost link postfields cookie ref nobody false upload false header true headers
  • 当类型参数之一应该为 Nothing 时,为什么 Scala 的隐式类不起作用?

    Update 我修改了示例以便可以编译和测试 我有一个定义丰富方法的隐式类 case class Pipe I O R f I gt O R object Pipe The problematic implicit class implic
  • Docker - 名称已被容器使用

    运行docker使用以下命令的注册表总是会抛出错误 dev tmp me docker run d name registry v1 e SETTINGS FLAVOR local e STORAGE PATH registry e SEA
  • PowerShell Tee-Object 未捕获文件中的调试行

    我有一个通过自动化运行的 PowerShell 脚本 因此我需要将脚本的输出捕获到文件中 但我还想捕获运行的命令 为输出提供一些上下文 我会使用set x在 Linux shell 脚本中 不过 我不知道如何将这些命令捕获到 Windows
  • Typescript 实例化通用对象

    我遇到了这个问题 搜索了几个小时却找不到合适的解决方案 我正在尝试创建一个通用函数来恢复类型和对象并将对象转换为该特定类型 但我在实例化泛型类型时遇到了麻烦 我想知道 c Activator CreateInstance 中是否有类似的东西
  • 从 spring mvc 设置选择框值

    如何从控制器在 jsp 中设置选择框值 Employee employee new Employee 我为实体创建了新对象Employee然后设置值 用这个代码指定 employee setEmpDesignation addEmploye
  • 使用 Windows PowerShell 设置 .SSH 密钥时出错

    我已经让 GIT BASH shell 与 SSH 密钥一起正常工作 所以我知道我的基本配置步骤是正确的 但我更喜欢 Windows powershell 实际上我更喜欢 Mac 或 Linux 终端 但没有可用的选项 Anyways 我的
  • 看不懂背包解决方案

    在维基百科中 Knapsack 的算法如下 for i from 1 to n do for j from 0 to W do if j gt w i then T i j max T i 1 j T i 1 j w i v i 18 el
  • 需要一组基于 DefinePlugin 常量的模块

    我正在尝试使用 Webpack 构建一个 Web 应用程序 但我在设计的特定部分遇到了一些困难 希望这里有人有做类似事情的经验 或者足够了解告诉我我是这样做完全错误 基本上 我们有一个 Angular 仪表板应用程序 它由一个 shell