是否可以在库和使用方项目之间为webpack中的“外部”依赖项共享模块状态?

时间:2019-04-17 17:32:43

标签: javascript webpack jestjs commonjs umd

我有一个打字稿项目,可以使用webpack构建umd捆绑包,这是一个图书馆项目。该webpack配置除其他外(相关部分):

webpack.config.js(项目核心库)

   output: {
      filename: mode === "production" ? "[name].min.js" : "[name].js",
      path: path.resolve(__dirname, "dist"),
      libraryTarget: "umd",
      library: "core-library"
    },

    externals: {
      "typescript-logging": "typescript-logging"
    }

该库使用typescript-logging,它被设置为外部脚本,因此消费者项目需要提供它。所有这些都可以构建并且可以很好地捆绑在一起,并且在检查捆绑包时,typescript日志记录确实是外部的。

使用者项目使用此项目,并在package.json依赖项中提供typescript记录。这个项目有一个开玩笑的测试。

我希望状态共享用于打字稿记录(核心库和使用者项目中使用的记录器/类别)。但是,我可以在核心库和使用者项目中两次创建相同的类别(名称相同的记录器)(如果状态在它们之间共享,则不允许这样做)。

由于webpack中的“外部”部分,我曾期望过,打字记录仅会存在一次,但似乎会被加载两次(一次在库中,一次在消费者项目中)。

请注意,测试是通过jest(npx jest)运行的。

这是预期的行为(也许不是)? 有人可以解释一下如何实现我想要的可能性,在这种情况下,对于打字稿记录代码,只有一个状态。

谢谢。

0 个答案:

没有答案