Webpack:如何让具有相同模块名称的运行时(不是buildtime)function标志?

我希望find一种方法来从相同的webpack运行和相同的输出url可用的同一个文件的替代版本,一个服务调用之后dynamic加载不同的块/ bundle确定用户属于哪个组。

背景:

在相同的构build和输出url中将alpha / beta更改投入生产,可以让我们开发和testing外部用户的function,但是需要改变的任何地方(以及后来删除它们)的条件都很容易出错,并且会生成更复杂的代码。

我的想法是有相同的文件在特殊的命名的子集的替代版本 – 例如foo / file.js和foo / flagged – special / file.js – 然后当某些东西从'foo / file'中导入blah时,它会自动为该用户获取正确的版本。

这避免了代码本身的条件,并为所有人提供了一个function,只是用备用代码覆盖基本文件。 它也不涉及我们现有的代码库和webpackconfiguration的巨大变化,也没有涉及到很多时髦和产品特定的语法来replace我们的所有导入语句。 (当我把这个想法集中在一起后,有人把我指向孟德尔,尽pipe他们自己的框架与webpack不友好,但是我认为基本的想法并不是疯狂的)

问题:

我看到function的例子 – 标记一个版本或另一个版本,但不是在一个版本中都有的两个例子。

我可以写一个自定义的加载器或插件来包装每个文件加载来做到这一点(我想 – 不知道webpack的输出如何在运行时评估方面工作),但这会导致添加两个版本的捆绑。

我想我可以创build一个基本输出块只是获取用户的选项,然后dynamic加载具有不同版本的两个备用块之一…但我不知道这是否会工作,或者如果我正在与networking内部的战争打一场不败的战争。

  • 这可以工作吗?
  • 有人已经做了这个?
  • 有没有更好的办法?

提前致谢!

Interesting Posts