【问题标题】:Reverse engineer css & js files in symfony2在 symfony2 中逆向工程 css & js 文件
【发布时间】:2015-05-30 05:25:06
【问题描述】:

在 symfony2 中有编译和未编译的 css/js 文件,我不知道。所以我们直接对 web/css 和 web/js 文件夹下的文件进行了修改。 现在我遇到了如何将文件移动到资产文件夹下的文件的未编译文件的问题。

所以我现在不能运行这个命令: php 应用程序/控制台资产:转储 --env=prod --no-debug 这将在 web 文件夹下重新创建所有 css 和 js 文件,我们将丢失所有更改。

是否有任何命令或方法可以扭转这种情况?就像一次性将我们的更改从 web/css 或 web/js 文件夹移动到资产而不是手动选择它们?

【问题讨论】:

  • 你在使用源代码控制吗?您根本不应该直接操作已编译的文件,并且您将在构建工具以支持这种故意不受支持的用例方面投入更多资金,而不是在解开更改并将其应用于这些文件的非编译版本方面。
  • @DavidFells - 当我们现在使用位桶进行更改时,不。但是,如何比较或做某事的最佳方式是什么?必须有某种方法才能准确地完成这项工作?
  • 如果你有旧版本,我会建议与旧版本进行比较,如果没有,请确保它现在在 SCM 中并重新生成。 @b.enoit.be 详细介绍了该部分,应该对您有用!

标签: php symfony


【解决方案1】:

一种方法是备份您的 web/css 和 web/js 文件夹,然后运行 再次php app/console assetic:dump --env=prod --no-debug

这样,您将获得有更改的版本(在备份中),而没有在 web/css 和 web/js 中。

然后通过服务器上的diff 命令,您将能够发现必须手动移回资产的更改。

如果您在生产站点上并且确实需要此操作快速进行,您可以这样做:
前四个命令只是为了备份实际状态。 然后剩下的就是重新创建资产,并将它们保存在一个文件夹中以便稍后进行比较,然后在您手动更改的位置恢复备份,这样浏览您网站的人就不会有时间注意到任何事情。

cd web
cp -R js js.bk
cp -R css css.bk
cd .. 
php app/console assetic:dump --env=prod --no-debug && cd web && cp -R js js.clean && cp -R css css.clean && rm -R css && cp -R css.bk css && rm -R js && cp -R js.bk js

然后您可以将文件夹 .bk 与 le 文件夹 .clean 进行比较

diff css.clean css.bk
diff js.clean js.bk

并重新调整您对正确资产的更改

差异结果的虚拟示例:

bash$ diff a b
diff a/test.css b/test.css
1c1
< .a { color:#321; }
---
> .a { color:#123; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 2011-08-09
    • 2016-09-27
    • 1970-01-01
    • 2018-10-08
    • 2012-08-26
    • 2012-02-26
    相关资源
    最近更新 更多