mirror of
https://github.com/discourse/discourse.git
synced 2025-05-21 18:12:32 +08:00
DEV: Update to Sprockets 4.0 (#16459)
The main difference is that Sprockets 4.0 no longer tries to compile everything by default. This is good for us, because we can remove all our custom 'exclusion' logic which was working around the old sprockets 3.0 behavior. The other big change is that lambdas can no longer be added to the `config.assets.precompile` array. Instead, we can do the necessary globs ourselves, and add the desired files manually. A small patch is required to make ember-rails compatible. Since we plan to remove this dependency in the near future, I do not intend to upstream this change. I have compared the `bin/rake assets:precompile` output before and after this change, and verified that all files are present.
This commit is contained in:
@ -142,9 +142,9 @@ module Discourse
|
||||
config.assets.skip_minification = []
|
||||
|
||||
# explicitly precompile any images in plugins ( /assets/images ) path
|
||||
config.assets.precompile += [lambda do |filename, path|
|
||||
path =~ /assets\/images/ && !%w(.js .css).include?(File.extname(filename))
|
||||
end]
|
||||
Dir.glob("#{config.root}/plugins/*/assets/images/**/*").each do |filename|
|
||||
config.assets.precompile << filename if !%w(.js .css).include?(File.extname(filename))
|
||||
end
|
||||
|
||||
config.assets.precompile += %w{
|
||||
vendor.js
|
||||
@ -193,25 +193,6 @@ module Discourse
|
||||
end
|
||||
end
|
||||
|
||||
# out of the box sprockets 3 grabs loose files that are hanging in assets,
|
||||
# the exclusion list does not include hbs so you double compile all this stuff
|
||||
initializer :fix_sprockets_loose_file_searcher, after: :set_default_precompile do |app|
|
||||
app.config.assets.precompile.delete(Sprockets::Railtie::LOOSE_APP_ASSETS)
|
||||
|
||||
# We don't want application from node_modules, only from the root
|
||||
app.config.assets.precompile.delete(/(?:\/|\\|\A)application\.(css|js)$/)
|
||||
app.config.assets.precompile += ['application.js']
|
||||
|
||||
start_path = ::Rails.root.join("app/assets").to_s
|
||||
exclude = ['.es6', '.hbs', '.hbr', '.js', '.css', '.lock', '.json', '.log', '.html', '']
|
||||
app.config.assets.precompile << lambda do |logical_path, filename|
|
||||
filename.start_with?(start_path) &&
|
||||
!filename.include?("/node_modules/") &&
|
||||
!filename.include?("/dist/") &&
|
||||
!exclude.include?(File.extname(logical_path))
|
||||
end
|
||||
end
|
||||
|
||||
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
||||
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
||||
config.time_zone = 'UTC'
|
||||
@ -290,6 +271,11 @@ module Discourse
|
||||
Sprockets.register_mime_type 'application/javascript', extensions: ['.js', '.es6', '.js.es6'], charset: :unicode
|
||||
Sprockets.register_postprocessor 'application/javascript', DiscourseJsProcessor
|
||||
|
||||
# This class doesn't exist in Sprockets 4, but ember-rails tries to 'autoload' it
|
||||
# Define an empty class to prevent an error
|
||||
class Sprockets::Engines
|
||||
end
|
||||
|
||||
require 'discourse_redis'
|
||||
require 'logster/redis_store'
|
||||
# Use redis for our cache
|
||||
|
Reference in New Issue
Block a user