我在PayPal的一个团队工作,试图让其他团队更有生产力。我们面临的最大问题之一是工具。*每个团队都必须建立和配置测试、客户端捆绑、刷新等工具,等等。*这种情况总是发生在开发人员身上,他们只有足够的时间让它工作,然后就不得不转移到其他优先事项上。因此,**工具并没有被优化。**😱 Webpack配置工作,但可以改进。提示器已经过时了,一个好的提示规则可以避免的bug也被送来了。谁会有时间去考虑建立一个像Flow这样的打字工具呢?
在PayPal,我们有一个项目 "生成器"(它实际上只是一个你克隆的 repo)。生成器的一个不幸的事实是,它们只是引导了项目。他们把所有的配置和保持更新的负担留给你。如果生成器的作者更新了生成器,那么更新所有的用户呢?😑
这是个西西弗的任务......

有一件事对整个React社区的生产力来说非常棒,那就是come-react-app。如果你不熟悉,create-react-app可以引导反应式应用程序,它有一个伟大的webpack构建和jest测试,支持babel和eslint。它的做法是让你只依赖一个工具,不需要配置。这个工具被称为 "react-scripts"。这个工具是一个CLI,带有用于(除其他外)构建和测试的脚本。它不能再简单了(如果你认为它可以,那么请随时提出问题)。
受此启发,我决定开始研究Paypal-scripts。它的基本思路是一样的,但有一个主要的例外。根据create-react-app的核心思想。
这个工具的目的是为刚开始使用React的人提供最好的体验,这将永远是我们的首要任务。
然而对于PayPal来说,目标是让开发者在运送更好的产品时更有成效。这就是为什么它有一个很好的默认配置,所以大多数时候你不应该需要配置任何东西。巨大的生产力提升。同时,如果我们要为我们的工程师提供真正的价值,我们确实需要覆盖更多的用例,所以尽管create-react-app不允许自定义配置,但paypal-scripts允许。
Tim Arney有一个叫react-app-rewired的项目。它很不错。然而,我采取了一种不同的方法来使paypal-scripts可配置。Paypal-scripts不允许你有一个接受配置的配置文件,并让你返回你的 "rewired "配置,而是假定你想要内置的配置,除非你自己配置了东西。例如,如果你在你的.babelrc 文件或babel 属性中添加了package.json ,那么paypal-scripts将使用你的babel配置而不是内置配置。这使得事情更有预见性,不那么神奇。✨
为了使事情变得更好,paypal-scripts公开了它所有的配置,所以你可以用内置的配置来组成你的自定义配置⚡️。因此,如果你想添加一个自定义的babel插件,就像把这个添加到你的package.json:
{
"babel": {
"presets": ["paypal-scripts/babel"],
"plugins": ["glamorous-displayname"]
}
}
我已经为我的开源项目使用了一年多的生成器。它极大地提高了生产力。然而,我一直受到我在这篇博文中讨论的所有事情的困扰。因此,在创建paypal-scripts的兴奋之余,我也一直在开发kcd-scripts,它做了同样的事情,只是将我对自己项目的偏好编码在CLI中。我一直在慢慢地把它添加到我的项目中,而且我对git diffs 😍感到非常满意。我的意思是...看看这个。
这是我不再需要维护的大量的配置和依赖关系ὤ。乘以我在npm上发布的100个包,这就是一些相当严重的生产力提升🚀。
它是开源的,所以你可以去看看它,如果你喜欢的话,也可以使用它!但是,这对我来说是非常具体的。但它对我来说是相当特殊的,没有很好的文档,而且受制于我的奇思妙想,所以我建议你把它分叉出来,做你想做的事。说真的,我建议任何拥有超过几个项目的人创建和使用这样的工具。我已经感觉到了胜利。
祝大家好运!👍