【发布时间】:2018-05-09 06:23:31
【问题描述】:
我们正在努力使我们的 React + GraphQL 项目独立于生态系统中的任何其他层,以改善开发人员的体验。与此一致,我们编写了一个瘦 HOC,它包装了 Apollo 自己的graphql HOC,并使用内部环境变量在网络获取和模拟数据之间切换。在生产版本中,所有模拟数据显然都没有被使用,即使它是imported。
有什么方法可以避免在 Webpack 的生产包中包含模块你知道你不会需要,同时保留其他所有内容相同/不破坏应用程序?
dynamic import() 之类的东西可以解决问题,但最终会分块您的构建,而不是省略您不需要/不想要的东西。
更新:该应用是使用create-react-app 1.0.17 创建的,后来被弹出。
【问题讨论】:
-
是否可以将模拟数据模块解析为生产中的空模块? github.com/facebookincubator/create-react-app/blob/master/…
-
模拟 apollo 客户端以返回您要模拟的数据,当 NODE_ENV==='production' 不提供模拟时,使用 webpack.conf 文件中的 NODE_ENV env var 将 apollo 本地解析为模拟模块对于阿波罗来说,让它顺其自然吧。这应该工作
-
@HMR 我相信这将是一个直接的解决方案。关于如何解决这个问题的任何想法?
-
@DayanMorenoLeon 我明白你的想法。它类似于下面给出的答案之一。在这种情况下,恐怕不是将一个模块与另一个模块交换那么简单。
-
@whitep4nther 想为 mauron85 提供赏金,但设置别名似乎是一种更简洁的解决方案(一个全局开关,而不是可能具有条件导入语句的许多文件)。明天我会检查,看看是否有人添加了答案。
标签: javascript reactjs webpack babeljs graphql