选择性Rails 3.2每个文件的资产管道压缩

Eli*_*kes 3 javascript ruby-on-rails asset-pipeline angularjs

我想有选择地压缩Rails 3.2应用程序中的一些javascript文件,但仍然在生产环境中从单个捆绑文件提供所有js资产.

像这样的语法,在app/assets/javascripts/application.js文件中,使用传递给最后3个sprockets 指令的make -up :compress => false选项,require我希望解释我想要实现的目标.

// Contents of app/assets/javascripts/application.js
//
//= require jquery
//= require jquery_ujs
//= require angular-1.0.1/angular, :compress => false
//= require angular-1.0.1/angular-resource, :compress => false
//= require products, :compress => false
Run Code Online (Sandbox Code Playgroud)

因此jquery.js和jquery_ujs.js文件将被压缩(通过Rails资产编译,默认使用UglifierJS),其余3个文件将不会被压缩,但它们将被捆绑到application.js包中.

有没有办法做到这一点?

其动机是products.js文件包含一个angularjs控制器,该控制器使用angular的依赖注入,这需要特定的变量名称,例如$scope并且$http不会被更改.

Mil*_*ric 8

我在config/environment/production.rb文件中使用此行

config.assets.js_compressor = Sprockets::LazyCompressor.new { Uglifier.new(:mangle => false) }

它压缩我的控制器,但它不会改变方法签名,所以DI仍然按预期工作.


Gra*_*ett 6

为了使这与Rails 4一起使用,因为它使用了我使用的更新版本的链轮:

config.assets.js_compressor = Uglifier.new(mangle: false) if defined? Uglifier

在environment/production.rb中