在开发人员模式下以及何时需要哪些编译命令?


24

有人可以在Magento 2开发人员模式下运行哪些编译命令时给我指示吗?我不确定我是否理解正确。

在devdocs中,开发人员模式描述如下:

  • 静态视图文件不被缓存;每次调用它们时,它们都会写入Magento pub / static目录

这是否意味着在请求pub / static中的每个文件时都会生成该文件,而您无需调用它setup:static-content:deploy?这与我的经验相矛盾。还是可以删除任何文件并将它们重新生成?此外,图像,CSS和JS文件似乎也有不同的对待。

开发人员模式文档页面上没有任何关于代码编译的内容,但是我认为也存在差异,因此不必setup:di:compiledi.xml文件中的所有更改之后运行。这是正确的吗?如果是这样,代码生成如何在开发人员模式下工作?

换句话说:除了高速缓存,在更改后我需要运行哪些命令?

Answers:


27

注意:我已经体验到在开发人员模式下删除pub/static会破坏机制,因为您摆脱了.htaccess使该文件夹神奇的文件。

如果您将pub/static/.htaccess文件保持在开发人员模式下,则无需运行任何编译命令:Magento将在请求文件后立即创建文件的符号链接。这意味着只要您还禁用了缓存,对静态资产的更改将立即可见。

您可以删除pub/static/frontendpub/static/adminhtml

默认模式中的资产物化pub/static子文件夹中,这意味着它们在第一请求创建(复制而不是符号链接)。如果修改它们,则必须刷新缓存以更新它们。

生产模式下,直到您运行bin/magento setup:static-content:deploy命令,资产才会实现(在请求时导致404 HTTP错误)。

希望能帮助到你。


DI编译呢?
Erfan

@Erfan你更精确的意思是什么?
亚历山德罗·隆奇

2
该问题还询问部署模式对DI编译的影响。我只是做了一个快速测试,如果您处于开发人员模式,则无需编译DI di.xml即可显示所做的更改(似乎每点击一次页面就可以动态生成代码?)无论如何,认为这对您已经很好的答案是一个很好的补充!
Erfan

您是对的@Erfan
Alessandro Ronchi

1+多谢兄弟。像魅力一样工作。为了使更改从css减少到css,即使在开发人员模式下,我反复执行部署命令的经验也非常糟糕。我从另一个项目复制了.htaccess并粘贴到上述位置。哈啦!
Umar Yousaf

4

根据我的经验,您无需在开发人员模式下运行任何命令即可生成代码/静态文件。

如果未生成静态文件,则可能存在另一个问题。

我乍看之下有两个原因:

  • 开发人员模式无法正常工作。可能由于某种原因激活失败
  • 在pub / static.php上对静态文件的重写不起作用

1
我的pub / static中的较少文件无法重新生成。你有这个问题吗?如何使其自动再生
mrtuvn

重要的是,开发人员模式必须处于活动状态,并且还可以进行重写,因为对静态文件的任何请求都将首先重写为pub / static.php,然后如果该文件不存在,它将在pub / static下生成文件(在开发人员模式下)
David Verholen '16

4

这是否意味着在请求pub / static中的每个文件时都会生成该文件,而您无需调用它setup:static-content:deploy?这与我的经验相矛盾。还是可以删除任何文件并将它们重新生成?

是。但是根据我的经验,这在大多数情况下都不起作用。可能是个错误。更好的解决方案是,pub/static即使您已经激活了开发人员模式,只要更改了静态文件(js,css,html等),都将删除内容并再次部署静态内容。 我自己的问题。


这取决于您的观看方式。如果您想每次进行更改都运行setup:static-content:deploy,那么将花费数年的时间才能完成一个项目,因为从根本上来说,您在为商店创建每个文件时都只更新一个文件。因此,我的解决方案是覆盖pub / static中的文件并清除缓存以查看我的更改。对结果满意后,我将转到主题或自定义模块文件来覆盖主文件,然后运行setup:static-content:deploy更新我的静态文件。
Wolfgang Leon

4

只是为了阐明这三种不同的模式(来源:Magento U基础课程)。粗体字表示与您的问题有关的特定要点。

开发者模式

  • 未启用静态文件实现。
  • 浏览器中显示的未捕获异常
  • 在错误处理程序中引发的异常,未记录
  • 系统登录var/report,非常详细。

在开发自定义或扩展时,应使用开发人员模式。此模式的主要好处是您可以看到错误消息。由于它会影响性能,因此不应在生产中使用。在开发人员模式下,每次请求时都会生成静态视图文件。它们被写入pub/static目录,但是不使用该缓存。这会对性能产生很大影响,但是开发人员对查看文件所做的任何更改都将立即可见。

未捕获的异常在浏览器中显示,而不是被记录。每当无法调用事件订阅者时,都会引发异常。

var/report在这种模式下,系统登录非常详细。

生产方式

  • 在生产系统上的部署阶段;最高性能
  • 不会向用户显示异常-仅写入日志。
  • 此模式禁用静态文件实现。
  • Magento docroot可以具有只读权限。

将Magento部署到生产服务器后,应在生产模式下运行它。

生产模式在Magento 2中提供了最高的性能。

此模式最重要的方面是错误已记录到文件系统,并且永远不会显示给用户。在这种模式下,静态视图文件在请求时不会即时创建。而是必须pub/static使用命令行工具将它们部署到目录中。生成的页面将包含指向已部署页面资源的直接链接。

查看文件的任何更改都需要再次运行部署工具。

由于视图文件是使用CLI工具部署的,因此Web用户确实需要具有写访问权限。Magento pub/static目录可以具有只读权限,这是可公开访问的服务器上更安全的设置。

默认模式

  • 未指定其他模式时使用
  • 对用户隐藏异常并将其写入日志文件
  • 启用了静态文件实现。
  • 不建议/未针对生产进行优化:缓存会对性能产生负面影响。

顾名思义,如果未指定其他模式,默认模式就是Magento软件的运行方式。

在这种模式下,错误会记录到文件中var/reports,并且永远不会显示给用户。静态视图文件会立即实现,然后进行缓存。

与开发人员模式相比,在清除生成的静态视图文件之前,看不到视图文件的更改。

默认模式未针对生产环境进行优化,这主要是因为静态文件而不是事前生成和部署静态文件会对性能产生不利影响。

换句话说,与使用静态文件创建命令行工具生成静态文件相比,动态创建静态文件并对其进行缓存对性能的影响更大。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.