Я выделил свои сторонние библиотеки из своего кода приложения и сгруппировал их все вместе в файл vendor.js
для requirejs. В моем файле build.js
я использую синтаксис modules
оптимизируйте мое основное приложение, исключая скрипты поставщика, и оптимизируйте файл vendor.js
. Единственная проблема, с которой я сталкиваюсь, - это когда мой скомпилированный модуль main
запрашивает vendor
, он получает baseUrl
из файла конфигурации и поэтому не загружает оптимизированный файл vendor.js
. Мой build.js
файл выглядит следующим образом:RequireJS baseUrl и несколько оптимизированных файлов
({
baseUrl: "js",
dir: "build",
mainConfigFile: "js/main.js",
removeCombined: true,
findNestedDependencies: true,
skipDirOptimize: true,
inlineText: true,
useStrict: true,
wrap: true,
keepBuildDir: false,
optimize: "uglify2",
modules: [
{
name: "vendor"
},
{
name: "main",
exclude: ["vendor"]
}
]
})
И мой main.js
файл выглядит следующим образом:
requirejs.config({
baseUrl: "js",
paths: {
jquery: 'vendor/jquery/jquery-2.1.3.min',
bootstrap: 'vendor/bootstrap/bootstrap.min',
handlebars: 'vendor/handlebars/handlebars-v2.0.0',
backbone: 'vendor/backbone/backbone-min',
underscore: 'vendor/lodash/lodash.underscore',
marionette: 'vendor/marionette/backbone.marionette.min',
models: 'common/models',
collections: 'common/collections'
}
});
define(['module', 'vendor'], function(module) {
var configPath = "config/config." + module.config().env;
require([configPath, 'app', 'jquery'], function(config, Application, $) {
$(function() {
// Kick off the app
Application.start(config);
});
});
});
Вся разработка осуществляется в папке js
, и мой build.js
файл находится вне этой папки. Оптимизированные файлы в конечном итоге в build
, родной брат к js
, но когда я включаю мой основной файл, как это:
<script data-main="build/main" src="js/vendor/require/require.max.js"></script>
Он заканчивает загрузку js/vendor.js
для этого define()
вызова. Что мне здесь не хватает? Как я могу сказать оптимизированный файл main
для загрузки build/vendor.js
, но разрешить неоптимизированную версию по-прежнему загружать js/vendor.js
?