$: << 'lib' require 'rake-pipeline-web-filters' require 'rake-pipeline/travis' require 'compass' roots ||= [Pathname.new(File.expand_path('.'))] paths = %w(styles scripts images static vendor).inject({}) do |paths, type| paths.merge(type.to_sym => roots.map { |root| root.join("assets/#{type}").to_s }) end Compass.configuration.images_path = paths[:images].first Compass.configuration.add_import_path paths[:styles].first Travis::Version.update output 'public/scripts' input paths[:scripts] do match 'app/templates/**/*.hbs' do filter Travis::HandlebarsFilter concat 'app/templates.js' end match '**/*.coffee' do coffee_script end match %r(^(?!vendor\/).*\.js) do modules = proc { |input| input.path.gsub(%r((^app/|^lib/|\.js$)), '') } minispade(string: true, rewrite_requires: true, module_id_generator: modules) concat [], ['dev/app.js', 'min/app.js'] end match 'vendor/**/*.js' do precedence = %w(jquery.min minispade handlebars ember).map { |name| "vendor/#{name}.js" } concat precedence, ['dev/vendor.js', 'min/vendor.js'] end match 'min/**/*.js' do filter Travis::ProductionFilter uglify max_line_length: 32 * 1024, squeeze: true filter Travis::SafeConcatFilter do 'app.min.js' end end match 'dev/**/*.js' do concat 'app.js' end end output 'public/styles' input paths[:styles] do match '**/*.{scss,sass}' do filter Rake::Pipeline::Web::Filters::SassFilter concat [], 'app.css' end end output 'public/images' input paths[:images] do match '**/*' do copy end end output 'public' input paths[:static] do match '**/*' do copy end end