Magento 2:如何仅部署主题


33

我曾经用它来部署内容,但是这花费了太多时间。

php bin/magento setup:static-content:deploy 

然后我发现添加语言的速度很快,但仍然可以部署所有主题。

php bin/magento setup:static-content:deploy  en_US

我怎么只能 deploy只显示主题内容?


仅供参考,有一个PR,它将添加此功能以及更多其他功能。我认为v2.2可能会推出。
thdoan

另一个潜在的解决方案,但对生产模式magento.stackexchange.com/questions/126270/...

我正在使用magento 2.0.4并使用此<code> php -dmemory_limit = 8G bin / magento设置:static-content:deploy --theme Rws / fonddecave en_US de_DE fr_FR </ code>但是出现错误--theme选项不存在。我的错误是什么,有人可以帮忙吗?
Raghwendra Ojha

如果您有新问题,请单击“ 提问”按钮提问。如果它有助于提供上下文,请包括指向该问题的链接。- 来自评论
Shoaib Munir

1
@DarrenFelton完成。
凯萨尔·萨蒂

Answers:


56

从2.1.1开始,您现在可以部署特定主题或排除主题:

部署特定主题:

php bin/magento setup:static-content:deploy --theme Magento/backend --theme Vendor/mytheme

排除主题:

php bin/magento setup:static-content:deploy --exclude-theme Magento/luma

enter image description here

更新这些选项现在在文档中


它对我不起作用,也没有在devdocs.magento.com/guides/v2.1/config-guide/cli/中提及。... 这里只有2个选项。
Adeel Ishfaq

@AdeelIshfaq像许多其他事情一样,它尚未被记录,但它确实在2.1.1中起作用。我附上了截图。
Mathew Tinsley

提交了一个拉取请求,以将新选项添加​​到文档中:github.com/magento/devdocs/pull/827
Mathew Tinsley

@MathewTinsley,是否可以在所有语言中部署特定的前端主题,而仅以一种语言部署特定的后端主题?我不需要所有语言的后端
。.– bpoiss

@bpoiss --language现在有一个参数。示例--language en_US
达伦·费尔顿

25

恐怕您不能通过magento console setup:static-content:deploy命令仅部署一个主题。

在过去的两周里,我一直在从事M2前端开发,我可以肯定开发过程是一个真正的痛苦!由于较少的文件层次结构和主题回退的复杂性,您将浪费大量时间来部署更改。

无论如何,现在我是Grunt,在这里您将找到如何安装,配置和使用它,使用Grunt,您可以为单个主题部署和/或重新编译较少的文件。

因此,如果您处于“开发人员”模式,则该方法是可行的,因为Grunt不会将图像字体javascript文件部署到其中,pub/static/...因此magento会在第一次需要时执行此操作。

要激活开发人员模式,请运行:

php bin/magento  deploy:mode:set developer

如果您正在寻找一种方法来为单个主题部署整个内容,那么production抱歉,这是不可能的。

顺便说一句,我很确定这将是一个不错的功能请求

编辑:最新消息!

我找到了一种更快部署所有更改的方法:

  • 安装Grunt +配置您的主题(每种语言一个)
  • 每次运行更改后:
    • grunt exec:{theme_name} // Clean folders and deploy less files
    • grunt less:{theme_name} // Process less files

Voila现在,您将在Just(¿?)12〜16秒内部署所有更改,这是我的个人记录12秒!

编辑:最新新闻2!

已确认!如果您要更改(已部署的).less文件,则只需运行即可grunt less:{theme_name}

因此,grunt exec:{theme_name}仅在以下情况下才需要运行:

  • 添加/删除/重命名*.less文件
  • 添加/删除/重命名*.js酒坊
  • 添加/删除/重命名*.css文件
  • 添加/删除/重命名image文件
  • 添加/删除 requirejs-config.js

此外,我残疾blockslayoutsfull page高速缓存,所以模板和/或XML布局的任何变化都会自动显示。


您能引导我如何通过减少我在topmenu中停留的时间来更改CSS吗?一些项目找到,但有些则不是,但有CSS是有..喜欢.nav-sections孩子level0
卡萨尔·萨蒂

我建议您阅读(整个)官方指南,这是一个很大的主题(devdocs.magento.com/guides/v2.0/frontend-dev-guide/…)。您必须了解所有内容lib > module > theme > fallback. 作为起点,请看一看lib/web/css
MauroNigrele

你可以看到用户界面库文件在自己的商店或在这里:magento2-demo.nexcess.net/pub/static/frontend/Magento/luma/...以及
MauroNigrele

2
当您编辑JS插件时该怎么办?我发现这些更改未在网站上反映出来。我必须从中删除已编辑的JS文件pub/static并重新部署(setup:static-content:deploy),以显示更改。
thdoan

不知道为什么这是公认的答案,下面的答案要好得多。
Tisch '18

16

在Magento 2中,您可以满足于部署特定主题,也可以通过以下命令排除主题:

内容部署特定主题通过以下命令:

php bin/magento setup:static-content:deploy --theme Vendor/firsttheme --theme Vendor/secondtheme

通过以下命令排除主题

php bin/magento setup:static-content:deploy --exclude-theme Vendor/yourtheme

如果您需要为特定语言(en_US)部署静态内容,并排除其他主题,并且不需要缩小HTML文件,请使用以下命令:

magento setup:static-content:deploy en_US --exclude-theme Vendor/yourtheme --no-html-minify


2

看来到目前为止,您必须手动部署除en_US以外的任何语言。我正在使用2.0.2和开发分支。


先生,是的。
dchayka

1

要使用特定语言部署特定主题:

php bin/magento setup:static-content:deploy --theme Magento/backend --theme Vendor/mytheme pt_BR


1

如果您的magento处于开发人员模式,请使用以下命令部署特定主题:

删除静态内容

rm -rf pub/static/*                            /*to remove files excluding .htaccess*/

rm -rf var/view_preprocessed/*                 /*to remove files excluding .htaccess*/

然后

php bin/magento setup:static-content:deploy -f --theme Vendor/theme

要么

php bin/magento s:s:d -f --theme Vendor/theme
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.