В RequireJs как я могу дать указание оптимизатору генерировать имена выходных файлов хэша? - PullRequest
7 голосов
/ 05 сентября 2011

Я запускаю оптимизатор следующим образом

sudo /usr/local/bin/node /tmp/r.j/r.js -o name=main out=test.js baseUrl=. 

для теста
Теперь, как мне сказать оптимизатору выводить имя файла в виде хэша содержимого (очевидно, чтобы установить максимальное время истечения), а затемпереименовать зависимость в соответствующих вызовах require?

Примером ситуации будет что-то вроде этого

require({
        baseUrl: '{{ STATIC_URL }}js',
        paths: {
            jquery: 'https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min',
            jqueryui: 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min'
        }
    }, ['order!jquery','order!jqueryui','order!main']);  

requirejs должен тянуть что-то вроде 13KUJAW78M.js

На основании предложение Миллера Медейроса IЯ планирую поместить все требуемые вызовы в один главный файл.Это также будет означать, что все такие вызовы также должны быть оптимизированы.

например,

switch(document.location.pathName){
        case '/foo':
            require(['sections/foo/main']);
            break;
        case '/foo/bar':
            require(['sections/foo/main', 'core/bar']);
            break;
        default:
            require('sections/home');
    }

require (['section / foo / main']);

следует оптимизировать до хеш-файла.

Может кто-нибудь помочь?

1 Ответ

4 голосов
/ 05 сентября 2011

RequireJS оптимизатор не имеет этой опции, но вы можете переименовать файлы и использовать paths config , чтобы установить псевдоним для переименованных файлов, см. эту ветку для получения дополнительной информации.

В вашем примере, например, если вы переименуете файлы в: 'section / foo / main.123QWERT.js', 'section / home.4567ASDFG.js', 'core / bar.0284ZXCV.js'Вы можете просто добавить конфигурацию путей следующим образом:

require.config({
  paths : {
    //alias to new files without JS extension
    'core/bar': 'core/bar.0284ZXCV',
    'sections/home' : 'sections/home.4567ASDFG',
    'sections/foo/main' : 'sections/foo/main.123QWERT'
  }
});

Конфигурация путей должна быть в файле, который не будет кэшироваться, возможно, просто сохраните конфигурацию в HTML.

...