Удалить неиспользуемый шим конфиг в RequireJS?

Итак, моя проблема в том, что я хотел бы иметь возможность автоматически удалять части конфигурации shim, которую я настроил для RequireJS; Вместо того, чтобы загружать весь уменьшенный файл Bootstrap, я разделяю его на различные плагины, так что я получаю преимущество меньшего размера файла, когда мое приложение использует меньше компонентов Bootstrap. Например:

require.config({
    paths : {
        jquery     : 'vendor/jquery/jquery.min',
        bootstrap  : 'vendor/bootstrap-sass/js'
    },
    shim : {
        'bootstrap/affix': { deps: ['jquery'], exports: '$.fn.affix' },
        'bootstrap/alert': { deps: ['jquery'], exports: '$.fn.alert' },
        'bootstrap/button': { deps: ['jquery'], exports: '$.fn.button' },
        'bootstrap/carousel': { deps: ['jquery'], exports: '$.fn.carousel' },
        'bootstrap/collapse': { deps: ['jquery'], exports: '$.fn.collapse' },
        'bootstrap/dropdown': { deps: ['jquery'], exports: '$.fn.dropdown' },
        'bootstrap/modal': { deps: ['jquery'], exports: '$.fn.modal' },
        'bootstrap/popover': { deps: ['jquery'], exports: '$.fn.popover' },
        'bootstrap/scrollspy': { deps: ['jquery'], exports: '$.fn.scrollspy'        },
        'bootstrap/tab': { deps: ['jquery'], exports: '$.fn.tab' },
        'bootstrap/tooltip': { deps: ['jquery'], exports: '$.fn.tooltip' },
        'bootstrap/transition': { deps: ['jquery'], exports: '$.support.transition' },
    }
});

Пока r.js оптимизатор правильно определяет, что я использую только bootstrap/dropdown, он все еще включает конфигурацию shim для файлов, которые не попадают в производственный код. Итак, мой вопрос: могу ли я автоматически избавиться от неиспользуемых файлов-прокладок? я использую grunt-contrib-requirejs для реальной оптимизации и не было проблем с этим. Решение на основе Grunt было бы предпочтительнее, но я открыт для всего остального. Благодарю.

1 ответ

Решение

Подведем итог изложенным выше замечательным моментам и, надеюсь, закроем вопрос.

  • Неиспользуемые конфиги shim не удаляются r.js, так как он не может знать, нужны ли они вам во время выполнения
  • ~175 байт (gzipped) не стоит оптимизировать вручную, особенно как часть полезной нагрузки, в 200 раз большей, и не приведет к заметному улучшению
  • AMDClean может быть автоматизированным способом полностью де-AMDify ваших скриптов и, таким образом, удовлетворения ваших желаний экономии размера
Другие вопросы по тегам