如何跳过已经缩小的Javascript的预编译并仍然保留需求序列?

时间:2013-08-20 12:38:12

标签: ruby-on-rails angularjs asset-pipeline ruby-on-rails-4 restangular

我正在使用Restangular with Rails 4,我希望告诉rails跳过预编译Restangular,因为我正在使用官方缩小版本,它不会破坏变量名称以防止Angular依赖注入问题。

这是我的application.js.coffee

#= require jquery
#= require jquery_ujs
#= require unstable/angular
#= require underscore
#= require_self
#= require_tree ./vendor
#= require_tree ./configs
#= require_tree ./models
#= require_tree ./directives
#= require_tree ./filters
#= require_tree ./controllers
#= require_tree ./misc

window.app = angular.module "myApp", ["restangular"]

缩小的restangular.min.js文件位于“javascripts / vendor”目录下。它需要在Angular之后加载,然后加载所有控制器,模型和内容。

如何告诉Rails资产管道跳过缩小restangular文件并仍然加载正确的顺序?

谢谢!

编辑:

我找到了解决方案并回答了我自己的问题。

2 个答案:

答案 0 :(得分:1)

我也在寻找解决这个问题的方法 - 跳过第三方图书馆的缩小 - 但与此同时:

# config/environments/production.rb
config.assets.js_compressor = Uglifier.new(:mangle => false)

然后将您的供应商lib切换到未经宣传的source并让Rails处理它,直到您/我们找到更好的选项。

更多Uglifier选项here

答案 1 :(得分:0)

解决方案:

我正在使用ngmin-rails gem来避免我的角度代码出现资产管道问题(Uglifier mangle)。我从来不知道像restangular这样的第三方库也可以通过ngmin-rails。所以我在预先缩小的restangular.min.js文件的顶部添加了以下行,它就像一个魅力!

var app = angular.module("myApp");

BTW,我也从我的应用程序布局html中删除了这一行:<%= javascript_include_tag "vendor/restangular.min.js" %>