共享反应前端组件 - >使用TypeScript分离项目 - > Visual Studio 2017

时间:2018-01-15 13:53:40

标签: visual-studio reactjs typescript npm webpack

我们在Visual Studio中有以下项目结构。我们有一个SharedComponents项目的原因是因为我们的客户端和管理界面之间共享了很多组件。我们使用特征模式,并希望有这个项目结构。

/src(.sln)
--/PublicClient
--/Admin
--/SharedComponents

我们的SharedComponents项目不是Visual Studio Shared Project而是Class Library,因为我们使用TypeLite NuGet从.NET类生成TypeScript接口。

由于SharedComponents项目有自己的package.jsontsconfig.jsontslint.json,我们面临很多问题。

模块化是这里描述的问题之一:

Typescript 2.6 -> Extend type definition for external library with module augmentation -> TS2339: Property '' does not exist on type ''

如果我们更改任何项目中的任何内容(包括SharedComponents),我们不会松开的一个功能是使用webpack-dev-server进行热重新加载。

我已经阅读了很多相关内容,但没有找到任何好的解决方案。

npm link由于移动node_modules中的依赖关系而导致构建错误。

https://github.com/npm/npm/issues/10343

https://github.com/facebookincubator/create-react-app/issues/1492

我们不想跳过共享项目并将文件复制到我们的项目中。在两个不同的项目中维护相同的组件将是耗时的。

如果我们将我们的共享项目开源到NPM或使用其他服务,例如 NPM private moduleslinklocalBitsinopia我们将失去热重新加载和/或必须单独维护包。

还有其他人处于相同的情况并找到了一个好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我们决定将所有前端代码放在一个项目中,然后在那里使用单独的文件夹。这意味着我们只有一个package.jsonnode_modulestsconfig.jsontslint.json。我们不能在同一个项目中使用API​​:但由于我们可以使用webpack-dev-server进行热重新加载,因此最终仍然是一个很好的权衡。

然后我们使用了两个名为webpack.config.jswebpack.publicclient.config.js的{​​{1}}个文件来进行不同的配置。