繁体   English   中英

狂欢 - 无法覆盖 js.coffee 文件

[英]Spree - cannot override js.coffee file

只需按照http://guides.spreecommerce.com/developer/asset.html 中的说明进行操作,但它不起作用。 包含并加载了新的 js 文件,但如果我创建同名文件,则无论如何都会加载 product.js.coffee 原始文件。 有什么建议?

所有.js

//= require jquery
//= require jquery_ujs
//= require spree/frontend
//= require_tree .

我整个上午都在为这个问题而烦恼。

最后,对我/app/assets/javascripts/spree/frontend/all.js/app/assets/javascripts/spree/frontend/all.js指定我想覆盖的每个文件。

例如,如果你想覆盖cart.js.coffeecheckout/address.js.coffee ,你的all.js应该是这样的:

//= require jquery
//= require jquery_ujs
//
//= require spree/frontend
//= require spree/frontend/cart
//= require spree/frontend/checkout/address
//
//= require_tree .

不要问我为什么有必要。 我的理解是//= require_tree . 应该自动执行此操作,但就我而言,好吧,事实并非如此。

创建all.js文件并冗余指定每个文件后,这最终对我all.js 但我是一个狂欢/导轨菜鸟,所以很可能有更好的解决方案。

编辑:

实际上,为了让这个工作,我不得不把上面的内容放在/vendor/assets/javascripts/spree/frontend/all.js并删除/app/assets/javascripts/spree/frontend/all.js 仍然困惑为什么这是必要的以及为什么require_tree不会自动选择这些,但很高兴最终让它工作。

为 Solidus 2.1.0 向后移植这个补丁解决了我替换/覆盖 JS 资产的问题 [1]。

问题似乎是 Sprockets 存在一个问题,即使用require_tree或相关的require阻止管道中的 JS 资产被覆盖。

总之

  1. 在您项目的供应商/资产下创建一个新文件,其文件名与您要在 Solidus 中替换的 JS 文件相同。 例如,要覆盖文件solidus_backend/app/assets/javascripts/spree/backend/flash.coffee ,请在您的项目中的your_project/{app,vendor}/assets/javascripts/spree/backend/flash.coffee创建一个替换文件. [2]

  2. 在您的项目中创建文件your_project/{app,vendor}/assets/javascripts/spree/backend.jsyour_project/{app,vendor}/assets/javascripts/spree/backend/templates/index.js

  3. backend.jsindex.js文件的内容从solidusio/solidus#1613复制到您的项目中。

  4. 删除 Solidus 版本中不存在的文件的任何需求,如果您已经定义了backend.jsindex.js ,则保留所有自定义需求。 [3]


脚注

  1. 包括 .js、.coffee、.hbs 以及在资产管道编译期间编译为 JavaScript 的任何其他文件。

  2. 项目中{app,vendor}/assets之间的任一目录都可以使用,因为它们都应该在资产管道加载路径中。 您希望如何组织 Solidus 扩展和覆盖是一个偏好问题。

  3. 我不得不删除spree/backend/images/uploadbackend.jsspree/backend/templates/products/upload_progressindex.js ,因为我是用固相线的版本,并且这些文件还不存在,所以我会从链轮获取 FileNotFound 错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM