Оптимизация процесса сборки Durandal

Стартовый набор HTML Pro для Durandal содержит следующую основную задачу по оптимизации сборки:

durandal: {
    main: {
        src: ['app/**/*.*', 'lib/durandal/**/*.js'],
        options: {
            name: '../lib/require/almond-custom',
            baseUrl: requireConfig.baseUrl,
            mainPath: 'app/main',
            paths: mixIn({}, requireConfig.paths, { 
                'almond': '../lib/require/almond-custom.js' 
            }),
            exclude: [],
            optimize: 'none',
            out: 'build/app/main.js'
        }
    }
}

У меня есть некоторые опасения по этому поводу, в которых мне нужна ваша помощь:

  1. Избыточность файла сценария. В процессе сборки сохраняется папка lib со скриптами, такими как jQuery, bootstrap и т. д. Почему? Если вы посмотрите на встроенный build/app/main.js, он добавил все эти скрипты. Что приводит меня к следующему вопросу:

  2. Если удалить папку lib, то все работает, кроме того, что в консоли получаю require is not defined. Код по-прежнему ищет lib/require/require.js, что можно решить, просто добавив его туда. Однако разве не в этом суть almond? Он включен во встроенный файл build/app/main.js. Насколько мне известно, Almond — это легкая замена require для использования в оптимизированных файлах.

Чтобы воспроизвести проблемы, вы можете просто запустить «Быстрый старт», указанный в ссылке вверху.


person Johan    schedule 17.09.2016    source источник
comment
может быть эта ссылка полезна для вас: « title = «Оптимизатор Durandal ссылается на неправильный путь при его создании в качестве процесса пост-сборки»> stackoverflow.com/questions/15684040/   -  person Sunil Kumar    schedule 20.09.2016
comment
Что касается вашего первого беспокойства, вы пробовали свойство removeCombined: true?   -  person nikhil    schedule 21.09.2016
comment
@nikhil Да, похоже, это не имеет никакого эффекта   -  person Johan    schedule 21.09.2016
comment
Я клонировал ваш проект и запустил grunt durandal:main. В папке сборки создается только файл main.js. Разве это не то, что вам нужно?   -  person nikhil    schedule 21.09.2016
comment
Вам нужно изменить ссылку файла скрипта в вашем index.html на build/app/main.js   -  person nikhil    schedule 21.09.2016
comment
@nikhil Я хочу сказать, что сторонние библиотеки будут существовать как во встроенной папке main.js и в папке lib, когда сборка будет завершена.   -  person Johan    schedule 21.09.2016


Ответы (1)


Да, вы правы, что main.js включает в себя все необходимое для запуска приложения. Причина, по которой вы получаете require is not defined, заключается в том, что если вы внимательно посмотрите на файл index.html, вы увидите, что ссылка index.html ищет файл в папке /lib/require и загружает через него наш файл main.js. прямо под index.html есть еще одна строка, которая закомментирована, вы можете просто раскомментировать ее, и она должна работать, даже если вы удалите каталог lib.

Единственные ошибки, которые вы получите, удалив каталог /lib после раскомментирования строки <script src="app/main.js"></script> и комментирования <script src="lib/require/require.js" data-main="app/main"></script>.

Надеюсь, поможет.

person Deendayal Garg    schedule 23.09.2016
comment
Довольно очевидно, если подумать. Спасибо за вторую пару глаз! - person Johan; 23.09.2016