gpt4 book ai didi

javascript - gatsby 是否默认删除 proptypes?

转载 作者:行者123 更新时间:2023-12-04 09:15:15 29 4
gpt4 key购买 nike

我正在与 gatsby 一起在一个新项目中工作并阅读有关如何在生产中删除 proptypes 我发现了这个:https://github.com/gatsbyjs/gatsby/pull/14987我的问题是默认情况下这是如何工作的(如果它适用于我的代码而不仅仅是 gatsby 的核心)?或者我应该做些什么来删除我代码中的所有 proptypes?

在运行 gatsby build && gatsby serve 之后,proptypes 仍然存在,我还尝试添加自定义 .babelrc 并直接使用此插件没有结果 https://github.com/oliviertassinari/babel-plugin-transform-react-remove-prop-types

最佳答案

简短回答:是的,PropTypes 默认被移除。


TLTR

React/Gatsby 应用程序与 PropTypes 完美配合。所描述的问题是关于是否在生产构建中应该删除这些 PropTypes 的公开辩论,因为代码在部署之前应该是连贯的、健壮的并且在 development 环境中有效在 production 环境中构建。

如果您假设您在 development 中的代码必须有效且 PropType 友好,您可以推断您可以省略 PropType 验证在 production 环境中减少带宽并缩短构建/部署时间,因为验证和审查是在 development 下完成的。

因此,默认情况下,您的 PropTypes 将在 production 构建中删除。

你不需要添加任何额外的配置,因为默认情况下,Gatsby 使用这个 .babelrc 结构:

{
"plugins": ["@babel/plugin-proposal-optional-chaining",],
"presets": [
[
"babel-preset-gatsby", //here your are adding the preset
{
"targets": {
"browsers": [">0.25%", "not dead"]
}
}
]
]
}

正如您在此 GitHub pull-request 中看到的那样在babel-preset-gatsby dependencies 包被添加到默认预设中。

此包中添加的更改仅影响项目的核心,而不影响 /node_modules 中的依赖项。

你看到的是 DefaultProps,这是一个默认值,由于某种原因(例如 CMS 问题)React 组件没有接收到 props 并通过提供一个来避免代码中断默认值。

总结:

  • 默认情况下,如果您使用默认的 .babelrc 集成,您的 PropTypes 将在 production 环境中被删除。
  • 您的 node_modules 依赖项不会受到此次添加 Gatsby Babel 预设的影响。
  • 您看到的是 DefaultProps,这是一种在使用 PropTypes 或数据获取问题时避免代码破坏的方法,尤其是在需要时。

关于javascript - gatsby 是否默认删除 proptypes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63254512/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com