Сжатие Jammit работает в режиме разработки, но не как сжатый JS - PullRequest
2 голосов
/ 10 марта 2011

Мое приложение Rails теперь довольно прогрессивно, и я хочу правильно сжать включенные файлы JS (Aloha Editor с плагинами + Gritter, составляя несколько файлов с более чем 1 МБ JS).Я выбрал Jammit из-за его прекрасной интеграции с Rails.Вот мой config / assets.yml:

package_assets:          always
javascript_compressor:   closure
compressor_options:
  compilation_level: ADVANCED_OPTIMIZATIONS

javascripts:
  admin:
    - public/aloha/aloha.js
    - public/aloha/plugins/com.gentics.aloha.plugins.Format/plugin.js
    - public/aloha/plugins/com.gentics.aloha.plugins.Table/plugin.js
    - public/aloha/plugins/com.gentics.aloha.plugins.List/plugin.js
    - public/aloha/plugins/com.gentics.aloha.plugins.Link/plugin.js
    - public/javascripts/*.js
    - public/javascripts/gritter/*.js

Для объяснения: aloha.js - это расширенная библиотека jQuery 1.4.2, а также файлы в /javascripts/.js и / gritter / .js в основном зависят от него (jQuery).Я включил теги в код моего представления с

<%= include_javascripts :admin %>

.

При переключении в режим dev (assets.yml имеет package_assets: on), Jammit оставляет файлы JS в одиночку и встраивает их все по одному, и мое приложение просто отлично.

Однако, когда в производственном режиме (env =: production, или assets.yml имеет package_assets: всегда), Jammit создает сжатый файл JS размером примерно 700 КБ (вау, это толстый монстр), который встраивается правильно, но я получаю ошибку JS " jQuery не определен"при загрузке страницы.Мое первое предположение состояло бы в том, что порядок файлов JS изменяется во время компиляции, даже если это не должно быть?

Еще одна вещь: оставление компрессора по умолчанию (yui) приводит к еще худшим ошибкам JS при загрузке.

Может кто-нибудь помочь мне, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

У нас было много проблем со сжатием Aloha Editor с компиляторами, которые выполняют «расширенную оптимизацию» - ядро ​​aloha компилируется нормально, но зависимость ExtJS не дает компиляции.посмотрите, может ли он пропустить компиляцию и просто присоединиться к файлу результатов вместо того, чтобы снова скомпилировать.

Еще одна вещь, которую стоит попробовать - посмотреть, можете ли вы включить в компиляторе только параметр whitespace_only или basic_optimisations.Это покажет, является ли это проблемой в процессе компиляции или нет.

0 голосов
/ 12 апреля 2011

Порядок файлов, скорее всего, проблема.Я бы порекомендовал указывать каждый файл явно и в том порядке, в котором вы хотите их (т.е. не делать /*.js).

Если это работает для вас, то вы можете переместить некоторые файлы javascript, которыене требуется заказ в подпапках и вызовите /*.js в этой подпапке.

...