-
Notifications
You must be signed in to change notification settings - Fork 253
Using Sprockets to compile javascript assets
By default (in Blacklight 7) the assets generator adds the following things to your application to enable Sprockets to build a javascript bundle:
Added to the Gemfile:
gem 'bootstrap', '~> 4.0'
gem 'popper_js'
gem 'twitter-typeahead-rails', '0.11.1.pre.corejavascript'
These requires are injected into app/assets/javascripts/application.js:
//= require jquery3
//= require popper
//= require twitter/typeahead
//= require bootstrap
If you are using Uglifier in production (rails default) and you encounter this error:
Uglifier::Error: Unexpected token: operator (>). To use ES6 syntax, harmony mode must be enabled with Uglifier.new(:harmony => true).
Then change this line in config/environments/production.rb:
config.assets.js_compressor = :uglifierto
config.assets.js_compressor = Uglifier.new(harmony: true)Blacklight 7 provides a pre-compiled JavaScript at (/app/assets/javascripts/blacklight/blacklight.js), which is compiled from the source files in app/javascript/blacklight. If you need fine-grained control over this process, you can override it for Sprockets by adding the "source path" to your application's asset path, and creating a custom app/assets/javascripts/blacklight/blacklight.js.
for example, in config/initializers/assets.rb you can put
bl_dir = Bundler.rubygems.find_name('blacklight').first.full_gem_path
assets_path = File.join(bl_dir, 'app', 'javascript')
Rails.application.config.assets.paths << assets_pathAnd, as an example, if you wanted to remove the 'autocomplete.js' from the compilation, your app/assets/javascripts/blacklight/blacklight.js could look like this:
//= require 'blacklight/core.js'
//= require 'blacklight/bookmark_toggle.js'
//= require 'blacklight/button_focus.js'
//= require 'blacklight/checkbox_submit.js'
//= require 'blacklight/facet_load.js'
//= require 'blacklight/modal.js'
//= require 'blacklight/search_context.js'Note that, when you update Blacklight versions, the available source files may change, so you might need to revisit this file from time to time.