Удалить неиспользуемый шим конфиг в 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 ваших скриптов и, таким образом, удовлетворения ваших желаний экономии размера