Ответ 1
Как я вижу из источника, Sprockets не имеет такого крючка, но вы можете использовать перехватчики задач рейка. Например, вы создадите задачу rake, которая запускает все препроцессоры, gulp и т.д., Поэтому эту задачу можно было бы поставить перед предварительной компиляцией.
# lib/tasks/before_assets_precompile.rake
task :before_assets_precompile do
# run a command which starts your packaging
system('gulp production')
end
# every time you execute 'rake assets:precompile'
# run 'before_assets_precompile' first
Rake::Task['assets:precompile'].enhance ['before_assets_precompile']
Затем вы просто запустите rake assets:precompile
, и в результате задача before_assets_precompile
будет выполнена непосредственно перед ней.
Также используйте system
вместо exec
, потому что exec
выйдет из процесса на этапе выполнения этой предварительной задачи и не будет запускать assets:precompile
после себя, как и ожидалось.
Источники: