webpack-encore 项目的版本控制策略

Version control strategy for webpack-encore project

我正在学习使用 webpack-encore 并注意到它仅作为 dev 依赖项安装。这是否意味着我应该在开发时编译 jscss 文件并将它们推送到存储库,然后再推送到生产环境?

在我看来,文档暗示的是什么,但这是否意味着合并冲突地狱?编译后的文件将无法合并。

这也不会违背版本控制理念吗?据我所知,您不会以编译语言(即 C/C++)发布二进制文件,您推送代码并期望服务器编译它们。我知道这与 javascript 中的 "compilation" 类型不同,但在这种情况下生产服务器的预期行为是什么?接收准备好为它们服务的文件,还是在发布时编译它们?

提前致谢

Does that mean I should compile my js and css files on development and push them to the repository, and then to production?

不完全是 - 这取决于您的部署方式。

部署时,您需要运行./node_modules/.bin/encore production来构建您的资产。完成此操作后,只有 您的构建资产(例如 web/build)需要转移到生产环境。

您可以 运行 在本地(或某些 "build" 服务器上)执行此命令并将所有文件传输到生产环境。或者,您可以在生产环境中使用 git pull,然后在生产环境中使用 运行 这个命令(缺点是您需要在生产环境中安装 Node.js)。

您不应该/不需要将构建的文件提交到您的存储库。但是......如果它简化了你的部署(即你想做一个 git pull 并完成),那没有真正的问题。

我刚刚在常见问题解答中添加了一个 PR 来回答这些问题 (http://symfony.com/doc/current/frontend/encore/faq.html) - here's the PR until it's deployed: https://github.com/symfony/symfony-docs/pull/8109

干杯!

解决方案一:

  1. 运行 yarn run encore production 本地
  2. 查看已创建/修改了哪些文件
  3. 将它们添加到 VCS
  4. 提交
  5. 推送/部署

方案二:

  1. 推送/部署
  2. 运行 yarn run encore production 远程部署

在我看来,第二种解决方案要好得多,因为您不需要在部署前进行额外的人工检查,一切都是自动化的。 但这有一个很大的缺点:构建资产可能是一个缓慢的过程,当我部署时,我的生产会在 5 到 20 秒内停止,直到构建资产。

这是 HTTP 500 错误:

An exception has been thrown during the rendering of a template ("Asset manifest file "[...]/web/build/manifest.json" does not exist.").

看起来 manifest.json 文件在进程开始时被删除,稍后从头开始创建。

有什么需要改进的吗?