Javascript Sylius:如何修改/定制app.js?

Javascript Sylius:如何修改/定制app.js?,javascript,gulp,themes,sylius,Javascript,Gulp,Themes,Sylius,我用我的自定义主题覆盖了Sylius中的一般主题,到目前为止,它工作得很好。我在app/themes/myCustomTheme中创建了一个新主题,并正在覆盖/SyliusShopBundle/views/中的树枝模板 现在我想覆盖位于供应商/sylius/sylius/src/sylius/Bundle/ShopBundle/Resources/private/js/中的常规app.js。例如,在第18行: $('.ui.accordion').accordion(); 我想使用不同的选择器

我用我的自定义主题覆盖了Sylius中的一般主题,到目前为止,它工作得很好。我在
app/themes/myCustomTheme
中创建了一个新主题,并正在覆盖
/SyliusShopBundle/views/
中的树枝模板

现在我想覆盖位于供应商/sylius/sylius/src/sylius/Bundle/ShopBundle/Resources/private/js/中的常规
app.js
。例如,在第18行:

$('.ui.accordion').accordion();
我想使用不同的选择器来初始化手风琴:

$('.my-custom-accordion').accordion();
假设这是我想在整个javascript代码中做的唯一更改。做这件事的最佳和最有效的方法是什么?我希望有尽可能少的冲突时,有一个Sylius版本更新,因此触摸尽可能少的文件。当然,不必自己重写整个javascript功能

我可以考虑不同的方法,但我希望有更好的方法:

  • 复制所有内容。将所有
    UiBundle
    ShopBundle
    javascript代码复制到我的主题中,并修改必要的部分。更新全局gulpfile,使其不再使用供应商/sylius/sylius/src/sylius/Bundle/ShopBundle/gulpfile.js中的gulpfile,而是使用重复的一个
    /myCustomTheme/SyliusShopBundle/gulpfile.js
    。缺点:代码重复,javascript更新不再可能
  • 向现有gulpfile添加自定义路径。
    供应商/sylius/sylius/src/sylius/Bundle/ShopBundle/gulpfile.js中更新gulpfile,这意味着删除包含
    app.js
    vendorShopPath+'Resources/private/js/**'
    的行,而是引用没有
    app.js
    的所有单个文件,并引用我的主题文件夹中自定义的
    app.js
    。缺点:对gulpfile的更改可能会被下一次更新覆盖

  • 如何有效地修改/自定义/扩展Sylius中现有的javascript代码?

    我解决了这个问题,在我的捆绑包(AppBundle)中创建了一个自定义gulpfile,并以与“admin”和“shop”相同的方式将其添加到全局gulpfile中。之后,您可以在布局或任何模板中包含自定义app.js。在我的例子中,我修改了Product/show.html.twig以添加我的custom.js:

    {% block javascripts %}
    {{ parent() }}
    
    {% include '@SyliusUi/_javascripts.html.twig' with {'path': 'assets/app/js/app.js'} %}
    {% endblock %}
    

    谢谢你的回答!如果我没弄错的话,你是在现有app.js的基础上添加自定义app.js的附加功能,对吗?如果我想添加额外的javascript,那么您的工作流似乎是一个很好的解决方案,但是如果我想更新/修改现有的javascript呢?如果您使用与sylius的js中使用的相同的函数名,那么您将覆盖/替换这些函数。如果有人有更好的想法,我愿意接受。