Skip to content
This repository has been archived by the owner on Mar 23, 2024. It is now read-only.

RequireJS concatenating JS but not minifying #267

Open
kaghaffa opened this issue Aug 2, 2016 · 2 comments
Open

RequireJS concatenating JS but not minifying #267

kaghaffa opened this issue Aug 2, 2016 · 2 comments

Comments

@kaghaffa
Copy link

kaghaffa commented Aug 2, 2016

Hi, I'm using requirejs-rails version 0.9.8 on Rails 4.0.13. I'm running into an issue where requirejs is concatenating all of my JS files, but not minifying them.

Here's my requirejs.yml file:

paths:
  'react'             : 'react/react-with-addons'
  'react-dom'         : 'react/react-dom'
  'react-router'      : 'react-router/index'
  'react-router-shim' : 'react-router-shim/react-router-shim'
  'jquery'            : 'jquery/dist/jquery'
  'lodash'            : 'lodash/lodash'
  'flux'              : 'flux/dist/Flux'
  'es6-promise'       : 'es6-promise/promise'
  'event-emitter'     : 'eventemitter2/lib/eventemitter2'
  'object-assign'     : 'object-assign/object-assign'
  'async'             : 'requirejs-plugins/src/async'
  'moment'            : 'moment/min/moment-with-locales.min'
  'bootstrap'         : 'bootstrap/bootstrap.min'
  'material'          : 'material-kit/material.min'
  'material-kit'      : 'material-kit/material-kit'
  'jquery'            : 'jquery/jquery.min'

shim:
  'react-router-shim':
    exports: 'React'
  'react-router':
    deps: ['react-router-shim']
    exports: 'ReactRouter'
  'material-kit':
    deps: ['jquery', 'material', 'bootstrap']
  'material':
    deps: ['jquery', 'bootstrap']
  'bootstrap':
    deps: ['jquery']
    exports: 'jquery'
  'lodash':
    exports: '_'
  'object-assign':
    exports: 'ObjectAssign'

And after running rake assets:precompile RAILS_ENV=production, I look into public/assets for the application-HASH file and see that it's just a big file with all of the JS concatenating. Here's my production.rb file as well:

App::Application.configure do
  # Settings specified here will take precedence over those in config/application.rb.

  # Code is not reloaded between requests.
  config.cache_classes = true

  # Eager load code on boot. This eager loads most of Rails and
  # your application in memory, allowing both thread web servers
  # and those relying on copy on write to perform better.
  # Rake tasks automatically ignore this option for performance.
  config.eager_load = true

  # Full error reports are disabled and caching is turned on.
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true

  # Enable Rack::Cache to put a simple HTTP cache in front of your application
  # Add `rack-cache` to your Gemfile before enabling this.
  # For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid.
  # config.action_dispatch.rack_cache = true

  # Disable Rails's static asset server (Apache or nginx will already do this).
  config.serve_static_assets = true

  # Compress JavaScripts and CSS.
  config.assets.js_compressor = :uglifier

  # config.assets.css_compressor = :sass

  # Do not fallback to assets pipeline if a precompiled asset is missed.
  config.assets.compile = true

  # Generate digests for assets URLs.
  config.assets.digest = true

  # Version of your assets, change this if you want to expire all your assets.
  config.assets.version = '1.1'

  # Specifies the header that your server uses for sending files.
  # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
  # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx

  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
  config.force_ssl = true

  # Set to :debug to see everything in the log.
  config.log_level = :info

  # Prepend all log lines with the following tags.
  # config.log_tags = [ :subdomain, :uuid ]

  # Use a different logger for distributed setups.
  # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)

  # Use a different cache store in production.
  # config.cache_store = :mem_cache_store

  # Enable serving of images, stylesheets, and JavaScripts from an asset server.
  # config.action_controller.asset_host = "http://assets.example.com"

  # Precompile additional assets.
  # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
  # config.assets.precompile += %w( search.js )

  # Ignore bad email addresses and do not raise email delivery errors.
  # Set this to true and configure the email server for immediate delivery to raise delivery errors.
  # config.action_mailer.raise_delivery_errors = false

  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
  # the I18n.default_locale when a translation can not be found).
  config.i18n.fallbacks = true

  # Send deprecation notices to registered listeners.
  config.active_support.deprecation = :notify

  # Disable automatic flushing of the log to improve performance.
  # config.autoflush_log = false

  # Use default logging formatter so that PID and timestamp are not suppressed.
  config.log_formatter = ::Logger::Formatter.new
end

Any insights would be very helpful. Thank you

@kayvonghaffari
Copy link

Some additional findings:

It looks like requirejs-rails is successfully minifying my JS files individually in my app's tmp/requirejs/dst directory, but these files aren't joined together to create the application-HASH.js file.

@kayvonghaffari
Copy link

I found the issue.

There was a syntax error with my JavaScript source that was silently failing the build. It was only when I added logLevel: 0 to my requirejs.yml file that I was able to see the error Unexpected token operator «=», expected punc «,» (line: 11, col: 37, pos: 276).

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants