webpack-encore 项目的版本控制策略
Version control strategy for webpack-encore project
我正在学习使用 webpack-encore 并注意到它仅作为 dev
依赖项安装。这是否意味着我应该在开发时编译 js
和 css
文件并将它们推送到存储库,然后再推送到生产环境?
在我看来,文档暗示的是什么,但这是否意味着合并冲突地狱?编译后的文件将无法合并。
这也不会违背版本控制理念吗?据我所知,您不会以编译语言(即 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
干杯!
解决方案一:
- 运行
yarn run encore production
本地
- 查看已创建/修改了哪些文件
- 将它们添加到 VCS
- 提交
- 推送/部署
方案二:
- 推送/部署
- 运行
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
文件在进程开始时被删除,稍后从头开始创建。
有什么需要改进的吗?
我正在学习使用 webpack-encore 并注意到它仅作为 dev
依赖项安装。这是否意味着我应该在开发时编译 js
和 css
文件并将它们推送到存储库,然后再推送到生产环境?
在我看来,文档暗示的是什么,但这是否意味着合并冲突地狱?编译后的文件将无法合并。
这也不会违背版本控制理念吗?据我所知,您不会以编译语言(即 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
干杯!
解决方案一:
- 运行
yarn run encore production
本地 - 查看已创建/修改了哪些文件
- 将它们添加到 VCS
- 提交
- 推送/部署
方案二:
- 推送/部署
- 运行
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
文件在进程开始时被删除,稍后从头开始创建。
有什么需要改进的吗?