使用webpack ou npm在多个包中分割javascript Javascript项目

我正在尝试构build一个必须在Windows(PC),Android和iOS上运行的应用程序。

为此,我将使用Electron(用于Windows)和React Native(用于移动平台)。 两者都将使用React和Redux进行构build。 这样,我将能够在Redux reducer和中间件中实现逻辑,并在两个项目中使用它们。

从现在开始,我使用webpack为Electron应用程序完成了POC。 reducer目前直接在应用程序代码中。 我想在一个单独的包中提取Redux的相关代码,以允许我在React Native项目中使用它。

我可以为包含reducer和middware的Redux模块创build一个npm包,但是这样,当我编译我的应用程序时,webpack不会编译我的单独包,它将使用预编译版本。

所以我想要的是能够创build一个单独的包,但仍然在应用程序编译时编译它(因为它仍然在开发中,而且dev与主应用程序dev密切相关)。

我只能用npm还是用webpack呢?

我很新的Javascript开发堆栈。

我认为你有不同的方法来处理这个问题。

  1. 你可以使用NPM包。 但是在包的代码中,你不但要存储原始的源代码,还要存储编译的代码。 我的意思是在发布这个包之前,你需要在正常的ES5代码中编译它。
  2. 我想你可以使用Git提供的子模块系统。 你应该使用你的reducer的通用代码来分开仓库。 在每个项目(Electron,RN等)中,您将拥有一个带有git子模块的目录。 Webpack应该正常编译那个目录下的代码,没有任何问题。

UPD:

关于子模块,你可以在这里阅读漂亮的文章: https : //git-scm.com/book/en/v2/Git-Tools-Submodules#Starting-with-Submodules

简言之,在项目中看起来像:

cd yourProjectFolder git submodule add https://github.com/TalAter/awesome-service-workers submoduleDirectoryName 

它会将存储库克隆到您的项目中,并创build.gitmodules文件。 当前项目存储库中不存在子模块中的代码。 在远程仓库中,它将只包含子模块的链接,但是在你的机器上,你将拥有完整的代码,你将能够编译它。