Javascript 盖茨比是否默认删除proptypes?
我和盖茨比在一个新项目中工作,阅读了关于如何在生产中删除proptypes的文章。我发现:我的问题是,默认情况下,这是如何工作的(如果它对我的代码有效,而不仅仅是对盖茨比的核心有效)?或者我应该做些什么来删除代码中的所有proptypeJavascript 盖茨比是否默认删除proptypes?,javascript,reactjs,gatsby,Javascript,Reactjs,Gatsby,我和盖茨比在一个新项目中工作,阅读了关于如何在生产中删除proptypes的文章。我发现:我的问题是,默认情况下,这是如何工作的(如果它对我的代码有效,而不仅仅是对盖茨比的核心有效)?或者我应该做些什么来删除代码中的所有proptype 运行gatsby build&&gatsby serve后,proptypes仍然存在,我还尝试添加一个自定义的。babelrc,并直接使用这个插件,没有结果。简短回答:是的,proptypes在默认情况下被删除 TLTR React/Gatsby应用程序与P
运行
gatsby build&&gatsby serve后,proptypes仍然存在,我还尝试添加一个自定义的。babelrc
,并直接使用这个插件,没有结果。简短回答:是的,proptypes
在默认情况下被删除
TLTR
React/Gatsby应用程序与PropTypes
完美配合。所描述的问题是关于是否在生产构建中,这些PropTypes
应该被删除的公开辩论,因为在开发
环境中部署或构建之前,代码应该是一致的、健壮的和有效的
如果您假定开发
中的代码必须有效且PropType
友好,那么您可以推断,您可以在生产
环境中省略PropType
验证,以减少带宽并缩短构建/部署时间,因为验证和审阅是在开发
因此,默认情况下,您的PropTypes
将在production
build中删除
您不需要添加任何额外的配置,因为默认情况下,盖茨比使用此。babelrc
结构:
{
"plugins": ["@babel/plugin-proposal-optional-chaining",],
"presets": [
[
"babel-preset-gatsby", //here your are adding the preset
{
"targets": {
"browsers": [">0.25%", "not dead"]
}
}
]
]
}
正如您在本文档和附件中所看到的,包被添加到默认预设中
此包中添加的更改只影响项目的核心,而不影响/node\u modules
中的依赖项
您看到的是一个DefaultProps
,它是一个默认值,因为某些原因(例如CMS问题),React组件没有接收到props,并通过提供默认值来避免代码中断
总结:
- 默认情况下,如果您使用默认的
.babelrc
集成,您的PropTypes
将在生产
环境中删除
- 您的
node\u模块
依赖项不会受此添加的盖茨比巴贝尔预设的影响
- 您看到的是
DefaultProps
,这是一种在使用PropTypes
或数据获取问题时避免代码中断的方法,特别是在需要时
我只是想重现你的问题,它对我有效。
我遵循以下步骤:
创建新盖茨比网站:npx盖茨比新盖茨比网站
构建站点:npm运行构建
运行站点:npm运行服务
例如,在标题中
组件类型定义如下:
Header.propTypes = {
siteTitle: PropTypes.string,
}
Header.defaultProps = {
siteTitle: ``,
}
检查完成的站点时,您只会看到defaultProps
,而不会看到propTypes
,这是正确的
var r=n(“q1tI”)
,o=n.n(r)
,i=n(“Wbzz”)
,a=函数(e){
var t=e.sitetile;
返回o.a.createElement(“标题”{
风格:{
背景:“丽贝卡紫色”,
marginBottom:“1.45雷姆”
}
},o.a.createElement(“div”{
风格:{
边距:“0自动”,
最大宽度:960,
填充:“1.45雷姆1.0875雷姆”
}
},o.a.createElement(“h1”{
风格:{
保证金:0
}
},o.a.createElement(i.Link{
至:“/”,
风格:{
颜色:“白色”,
文本装饰:“无”
}
},t)))
};
a、 defaultProps={
网站名称:“
};
var c=a;
您还可以通过将sitetTitle
设置为PropTypes.number
Header.propTypes = {
siteTitle: PropTypes.number,
}
使用npm run develope
在开发中运行时,您将在控制台中看到一条警告
Failed prop type: Invalid prop `siteTitle` of type `string` supplied to `Header`, expected `number`.
当运行npm-run-build和&npm-run-service时,您在生产中不会看到这一点
注意:propTypes
和defaultProps
有所不同
你也检查过你的盖茨比版本了吗?可能您正在运行旧版本
我尝试过使用这些版本(最新发布时)
"dependencies": {
"gatsby": "^2.24.26",
"gatsby-image": "^2.4.14",
"gatsby-plugin-manifest": "^2.4.21",
"gatsby-plugin-offline": "^3.2.21",
"gatsby-plugin-react-helmet": "^3.3.10",
"gatsby-plugin-sharp": "^2.6.24",
"gatsby-source-filesystem": "^2.3.23",
"gatsby-transformer-sharp": "^2.5.12",
"prop-types": "^15.7.2",
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-helmet": "^6.1.0"
},