Webpack:如何使用具有相同模块名称的运行时(而不是构建时)功能标志?

时间:2017-08-22 21:23:29

标签: javascript node.js webpack lazy-loading

我希望找到一种方法,可以从同一个webpack运行和相同的输出url中获得同一文件的备用版本,并在服务调用确定用户的哪个组后动态加载不同的chunk / bundle落入。

背景:

在相同的构建和输出URL中将alpha / beta更改投入生产让我们可以与外部用户一起开发和测试功能,但是在任何地方粘贴条件(以及后来删除它们)需要更改是容易出错并生成更复杂的代码

我的想法是在特别命名的子目录中有相同文件的备用版本 - 例如foo / file.js和foo / flagged - special / file.js - 然后当某些东西从'foo / file'它会自动为该用户获取正确的版本。

这避免了代码本身的条件,并且使所有人都可以使用的功能只是用备用文件覆盖基本文件。它也不会对我们现有的代码库和webpack配置进行大的更改,也不会涉及很多时髦和特定于产品的语法来替换我们的所有import语句。 (在我把这个想法放在一起之后,有人把我指向孟德尔,雅虎在那里做了很多相同的事情,虽然他们自己的框架与webpack不友好,所以我假设基本想法并不疯狂)

问题:

我看到一个功能的示例 - 将构建标记为一个版本或另一个版本,但没有任何示例在一个版本中同时存在。

我可以编写一个自定义加载器或插件来包装每个文件加载来执行此操作(我认为 - 不确定webpack的输出如何在运行时评估方面工作),但这会导致将两个版本添加到bundle 。

我认为我可以创建一个基本输出块,只需获取用户的选项,然后动态加载具有不同版本的两个备用块中的一个......但我没有想法是否可行,或者我是否正在与网络内部组织进行一场输掉战争。

  • 这可以吗?
  • 有人已经这样做了吗?
  • 有更好的方法吗?

提前致谢!

0 个答案:

没有答案