2014-07-23 6 views
0

У меня есть Rails 4 проекта, который имеет .js.map файлов в каталоге app/assets/sourcemaps и .ts файлов в app/assets/typescripts directory. Однако при работе rake assets:precompile, то прекомпиляция что Звездочки использования будет врезаться с ошибкой родственной чтобы:Asset Pipeline: Игнорировать ceratin типов файлов

rake aborted! 
ExecJS::ProgramError: Unexpected token: punc (:) (line: 1, col: 10, pos: 10) 

Error 
    ....... a backtrace ...... 
    (in $APP_ROOT/app/assets/sourcemaps/index_uploads_controller.js.map) 
Tasks: TOP => assets:precompile 

конечно, неудача имеет смысл, как .js.map файл не является Java-файл, но до сих пор Звездочки пытается сделать что-то с ним.

Как я могу заставить Sprockets игнорировать эти файлы? Я пробовал играть с Sprockets::Rails::Helper#asset_needs_precompile?, но это, похоже, не имеет значения. На SO также есть несколько вопросов, которые, похоже, имеют аналогичную проблему, но решения не работают для Rails 4.

Спасибо!

ответ

1

К сожалению, нет простого способа (я знаю), чтобы исключить вещи из активов, предварительно скомпонованных до тех пор, пока они не станут частью sprockets by default. У вас есть несколько вариантов.

  1. Написать новый PreCompile включают утверждение, что пренебрегает sourcemaps: (например, через asset pipeline guide)

конфигурации/Инициализаторы/assets.rb

Rails.application.config.assets.precompile << Proc.new do |path| 
    if path =~ /\.(css|js)\z/ 
    full_path = Rails.application.assets.resolve(path).to_path 
    app_assets_path = Rails.root.join('app', 'assets').to_path 
    if full_path.starts_with? app_assets_path 
     puts "including asset: " + full_path 
     true 
    else 
     puts "excluding asset: " + full_path 
     false 
    end 
    else 
    false 
    end 
end 
  1. использовать что-то вроде coffee-rails-source-maps, который будет помогите вам настроить настройки для среды только для разработчиков.

  2. Перенесите исходные карты из каталога app/assets вручную в другое место и введите мир боли, когда вы попытаетесь сопоставить их все, в то же время гарантируя, что они не будут переданы в репо или не будут встроены в состав pipiline.

0

Простой способом будет размещать все, что CSS файлы в подкаталоге таблиц стилей, такие как активы/Стили/приложение и все JS файлы в подкаталоге JavaScripts, такие как активы/JavaScripts/применение

Тогда в вас JS манифест заменить //= require_tree . на //= require_tree ./application и в вашем CSS манифест заменить *= require_tree . на *= require_tree ./application

Это было бы оставить sourcemaps и машинописных каталоги из сферы компиляции

 Смежные вопросы

  • Нет связанных вопросов^_^