FTW*_*FTW 3 symfony webpack webpack-encore
我目前正在为 symfony 5 项目配置一些 docker 映像,并尝试处理生产构建。这样做时,我注意到 webpack encore 仅在开发模式下安装,正如官方文档中所建议的: https: //symfony.com/doc/current/frontend/encore/installation.html:
yarn add @symfony/webpack-encore --dev
Run Code Online (Sandbox Code Playgroud)
然而,这对我来说没有意义,因为即使在生产中,我们也应该构建资产:
yarn encore production
Run Code Online (Sandbox Code Playgroud)
有人有这方面的线索吗?谢谢
Symfony 文档如何部署我的 Encore 资产?部署资产时需要记住两件重要的事情:
\n1) 编译生产资源:
\n$ ./node_modules/.bin/encore production\nRun Code Online (Sandbox Code Playgroud)\n现在重要的部分:
\n\n\n但是,您应该在什么服务器上运行此命令?这取决于你如何部署。例如,您可以在本地(或在构建服务器上)执行此操作,并使用 rsync 或其他方式将生成的文件传输到生产服务器。或者,您可以首先将文件放在生产服务器上(例如通过 git pull),然后在生产上运行此命令(理想情况下,在流量到达您的代码之前)。在这种情况下,您\xe2\x80\x99将需要在生产服务器上安装 Node.js。
\n
第二件重要的事情:
\n2)仅部署已构建的资产
\n\n\n唯一需要部署到生产服务器的文件是最终的构建资产例如 public/build 目录)。您不需要安装 Node.js、部署 webpack.config.js、node_modules 目录甚至源资产文件,除非您计划在生产计算机上运行 encore 生产。一旦您的资产构建完成,这些就是唯一需要存在于生产服务器上的东西。
\n
简单来说,在生产环境中你只需要生成的资产(通常是/public/build是目录内容)。在一个简单的场景中,当您只需要加载已编译的 Javascript 和 CSS 文件时,Webpack 在运行时不会使用。
手动部署 Symfony 应用程序时(无需 CI/CD)时,可以在本地计算机或 Docker 容器中执行以下步骤(假设 Symfony 4/5):
\ngit-archive,例如:git archive --prefix=myApp/ HEAD | tar -xC /tmp/ \xc2\xb9cd /tmp/myAppcomposer install --no-dev --optimize-autoloaderyarn installyarn build或yarn encore production)bin/console assets:install:)现在代码已准备好发送rsync到生产服务器。您可以排除或删除/node_modules,/var甚至/assets目录 和webpack.config.js(可能package.json也不yarn.lock需要 & - 没有测试它!)并运行例如:rsync --archive --compress --delete . <myProductionServer>:<app/target/path/>
有关 Symfony 部署的资源:
\n\xc2\xb9 将存档的 GIT 存储库即时解压到/tmp/myApp目录中,而不是解压缩到 TAR 存档中。不要错过旗帜/中的领先部分--prefix!git-archive文档。
| 归档时间: |
|
| 查看次数: |
2570 次 |
| 最近记录: |