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

时间:2017-06-28 11:58:24

标签: javascript php symfony webpack webpack-encore

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

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

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

提前致谢

2 个答案:

答案 0 :(得分:3)

  

这是否意味着我应该在开发时编译我的js和css文件并将它们推送到存储库,然后再投入生产?

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

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

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

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

我刚刚在常见问题解答(http://symfony.com/doc/current/frontend/encore/faq.html)中添加了一个公关来回答这些问题 - 这是PR,直到它被部署:https://github.com/symfony/symfony-docs/pull/8109

干杯!

答案 1 :(得分:2)

解决方案1:

  1. 在本地运行yarn run encore production
  2. 查看已创建/修改的文件
  3. 将它们添加到VCS
  4. 提交
  5. 推送/部署
  6. 解决方案2:

    1. 推送/部署
    2. 在部署期间远程运行yarn run encore production
    3. 在我看来,第二种解决方案更好,因为在部署之前你不需要额外的人工检查,一切都是自动化的。 但这有一个很大的缺点:构建资产可能是一个缓慢的过程,当我部署时,我的生产在5到20秒内停止,直到资产建成。

      这是HTTP 500错误:

        

      在呈现模板期间抛出了异常(“资产清单文件”[...] / web / build / manifest.json“不存在。”)。

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

      应该改进的东西?