CSS和JavaScript的更改仅在部署静态内容后才适用


8

我从Magento网站安装了Magento 2。我已经通过以下方式激活了开发人员模式

{project directory}>php bin/magento setup:mode:set developer

然后,我安装了自定义主题,最后通过以下方式部署了静态内容:

{project directory}>php bin/magento setup:static-content:deploy

我的问题是pub/static,每次应用css和javacript更改时,我都必须删除目录并部署静态内容。静态内容部署过程很慢,并且花费大量时间,非常令人沮丧。我开发了一些东西,必须部署才能使更改出现。即使是很小的变化。刷新缓存无济于事。任何帮助,将不胜感激。提前致谢。

Answers:


4

目前,您只有这种方式来应用更改。Magento应该将更改应用于pub / static目录,但不能更改。这仍然知道错误。希望它能尽快得到解决。
您可以像执行命令一样通过命令应用新的更改。这种方法将花费一些时间,但是
当我从扩展中修改js时,应该可以按我的方式工作。我只是去pub dir并清除文件夹

\pub\static\frontend\Magento\luma\en_US\<Vendor_Module>\js

自定义样式时,可以对css文件执行相同操作


您是否知道github上的票证或您的个人看法?据我所知没有问题。
卡迪(Kandy)2016年

4

Magento有不同的策略来实现静态资产。复制和链接。当您运行setup:static-content:deploy时,此命令将使用复制策略,并且文件将在静态文件夹中实现,并且在更改原始文件时不会更改。

如果清理静态文件夹并在浏览器中打开页面,则将使用链接策略并在原始文件上创建链接。因此,您将修改源并查看更改


是的,但是在清除静态内容并且不部署它之后,需要花费更多时间来加载页面。还有一个浏览器缓存问题,尽管在这种情况下我们可以使用隐身标签,这会在创建新内容时再次增加加载时间。基本上,它是耗时的过程,您不能否认这一点。
Sanjay Chaudhary

0

但是,一旦我从\ pub \ static \ frontend \ Magento \ luma \ en_US \ Vendor_Module \ js目录中手动删除,则在页面加载后不会自动生成该目录。再次,我必须应用命令static-content deploy,然后js和css文件中发生了新变化,这与我针对特定模块所做的一样。


0

如果你跑

bin/magento dev:source-theme:deploy --theme [Vendor]/[theme] --locale <locale>

在部署静态资产之前,Magento将在pub / static目录中创建到供应商中文件的符号链接(而非副本)。

因此,您可以修改主题中的文件,并自动在pub / static中生成文件,而无需每次都运行bin / magento setup:static-content:deploy

现在,您可以使用任务运行器来编译文件并生成CSS。


0

问题是,当您删除pub / static的全部内容时,也会删除.htaccess文件,这会导致在开发人员模式下生成指向静态资源的符号链接时出现问题。

所以,

  1. 不要删除.htacess文件。
  2. 仅删除您特定主题的目录,例如。仅删除pub / static / frontend / Your / theme中的内容

根据我的经验,在开发人员模式下将符号链接用于静态文件时,无需删除即可查看更改。如有疑问,请运行

php bin/magento cache:flush
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.