【问题标题】:Webpack: Should I build bundle on production server or build it locally and then upload?Webpack:我应该在生产服务器上构建捆绑包还是在本地构建然后上传?
【发布时间】:2018-02-17 11:12:07
【问题描述】:
我正在 AWS Elastic Beanstalk 上部署一个 React 应用程序。我使用 webpack 捆绑应用程序。但是,我对生产构建过程中的最佳实践感到有些困惑。我是否应该使用 webpack 在本地构建应用程序(使用 NODE_ENV=production),然后将生成的 bundle.js 文件以及所有 node_modules 上传到 Elasticbeanstalk 实例?或者,我应该上传所有源文件,并在部署期间在实际的云 AWS 服务器上运行webpack?
【问题讨论】:
标签:
amazon-web-services
webpack
amazon-elastic-beanstalk
【解决方案1】:
说实话,这两种方法都不是很好。本地构建并不是构建您想要在生产中拥有的任何东西的最佳方式。您可能在本地拥有可能对您正在构建的内容产生影响的软件包。这同样适用于您执行此操作的操作系统。
同样,部署期间的建筑物也是如此。正如“部署”的名称所代表的那样,它正在部署。只需将您的应用程序设置放在服务器上,以便它可以按预期运行。
这就是所有 CI/CD 的用武之地。拥有这些类型的解决方案可确保每次构建都使用相同的步骤并在相同的解决方案堆栈上完成。不需要每个构建之间的差异,因为它允许您假设与“设计”相比的任何错误或更改是由于代码,而不是构建它的环境。
假设你是这里唯一的开发人员(因为你要求这样的东西),CI/CD 在这里可能是绝对的矫枉过正,所以只需创建带有步骤的 shell 脚本并使用 Docker 作为构建环境,所以它在每个构建之间保持不变。这是您可以轻松获得的最接近 CI/CD 选项的选项。
【解决方案2】:
您永远不应该在本地构建生产环境(除非您是唯一的开发人员)。
理想情况下,您有一个构建过程,该过程由 git 提交手动或自动触发,然后为您构建项目以用于生产。
通过使用集中构建过程,您可以确保所有构建都以相同的方式构建(例如,相同的node 版本、相同的npm 或yarn 版本)。