gpt4 book ai didi

symfony - 为什么 webpack encore 只在 dev 中需要

转载 作者:行者123 更新时间:2023-12-04 08:57:56 25 4
gpt4 key购买 nike

我目前正在为一个 symfony 5 项目配置一些 docker 镜像并尝试处理生产版本。这样做时,我注意到 webpack encore 仅安装在开发模式下,如此官方文档所述:https://symfony.com/doc/current/frontend/encore/installation.html :

yarn add @symfony/webpack-encore --dev
但是,这对我来说没有意义,因为即使在生产中,我们也应该构建 Assets :
yarn encore production
有没有人有这方面的线索?
谢谢

最佳答案

Symfony 文档位于 How Do I Deploy My Encore Assets?提供部署 Assets 时要记住的两个重要事项:
1) 为生产编译 Assets :

$ ./node_modules/.bin/encore production
现在重要的部分:

But, what server should you run this command on? That depends on how you deploy. For example, you could execute this locally (or on a build server), and use rsync or something else to transfer the generated files to your production server. Or, you could put your files on your production server first (e.g. via git pull) and then run this command on production (ideally, before traffic hits your code). In this case, you’ll need to install Node.js on your production server.


第二个重要的事情:
2) 仅部署内置 Assets

The only files that need to be deployed to your production servers are the final, built assets (e.g. the public/build directory). You do not need to install Node.js, deploy webpack.config.js, the node_modules directory or even your source asset files, unless you plan on running encore production on your production machine. Once your assets are built, these are the only thing that need to live on the production server.


简单的说,在生产环境中你只需要生成的assets(通常是 /public/build目录内容)。在一个简单的场景中,当您只需要加载已编译的 Javascript 和 CSS 文件时,Webpack 不会在运行时使用。
如何部署 Symfony 应用程序和 Assets 的可能解决方案
手动部署 Symfony 应用程序(无 CI/CD)时,可以在本地机器或 Docker 容器(假设 Symfony 4/5)中执行以下步骤:
  • 使用 git-archive 从 GIT 存储库导出源代码,例如:git archive --prefix=myApp/ HEAD | tar -xC /tmp/ ¹
  • 转到导出的源代码:cd /tmp/myApp
  • 安装 Symfony 和其他 PHP 供应商(另见 Symfony docs):composer install --no-dev --optimize-autoloader
  • 安装 YARN/NPM 供应商(他们需要使用 Webpack 生成 Assets ):yarn install
  • 创建生产 Assets :yarn build (或 yarn encode production)
  • (如果需要,安装 Symfony Assets :bin/console assets:install)

  • 现在代码准备好了 rsync它到生产服务器。您可以排除或删除 /node_modules , /var甚至 /assets目录和 webpack.config.js (可能 package.jsonyarn.lock 也不需要——没有测试过!)并运行例如: rsync --archive --compress --delete . <myProductionServer>:<app/target/path/>Symfony 部署资源:
  • How to Deploy a Symfony Application (Symfony 文档)
  • How Do I Deploy My Encore Assets? (Symfony 前端常见问题解答)
  • Do I Need to Install Node.js on My Production Server? (Symfony 前端常见问题解答)
  • Production Build & Deployment (SymfonyCast)

  • ¹ 即时将存档的 GIT 存储库解压到 /tmp/myApp目录而不是 TAR 存档。不要错过领先 /--prefix旗帜! git-archive docs .

    关于symfony - 为什么 webpack encore 只在 dev 中需要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63713945/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com