javascript - gatsby 是否默认删除 proptypes?

标签 javascript reactjs gatsby

我正在与 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/

相关文章:

javascript - Blade 和 JavaScript - 如何从属性内的字符串中删除空格

javascript - 没有为嵌套组件调用 React 渲染方法

reactjs - Webpack 5 & Jest - 类型 'toBeInTheDocument' 上不存在属性 'JestMatchers<HTMLElement>'

javascript - 无法使用点或方括号表示法来访问 json/javascript 对象中的键或数据,该对象在获取后保存到状态

javascript - Lodash差异通过澄清

sass - 在全局范围内将sass包含在gatsby中

graphql - 如何在 gatsby graphql 中查询日期范围?

javascript - 如何使用 jquery if else 语句设置相同的高度值

javascript - 如何对包含 Controller 传递的sql行的gsp中的表进行排序

google-analytics - “gatsby-plugin-google-analytics”不适用于我的 gatsby-strapi 网站