Проблемы генерации пакета с RequireJS
У меня есть проект Typescript:
myproject
|
+-src (folder)
| |
| +-main.ts
| +-stringHandler.ts
| +-disposable.ts
+-out (folder)
| |
| +-...
+-Gruntfile.js
В моей конфигурации Grunt у меня есть двухэтапное задание, которое компилирует все .ts
файлы в myproject/src/
и генерирует соответствующие .js
файлы в myproject/out/
, Итак, после того, как первый шаг задачи завершен, у меня есть следующее:
myproject
|
+-out (folder)
|
+-main.js
+-stringHandler.js
+-disposable.js
Пакетирование
Второй шаг задачи - создание файла пакета myproject.js
, Я использую RequireJS для этой цели.
Я установил https://github.com/gruntjs/grunt-contrib-requirejs. Gruntfile.js
Файл, обрабатывающий задачу связывания, выглядит следующим образом (показывая только соответствующие части в файле):
module.exports = function(grunt) {
var config = {
pkg: grunt.file.readJSON('package.json'),
requirejs: {
compile: {
options: {
baseUrl: "out",
bundles: {
'myproject': ['main', 'stringHandler', 'disposable']
},
out: 'out/myproject.js'
}
}
}
};
grunt.initConfig(config);
grunt.loadNpmTasks('grunt-contrib-requirejs');
grunt.registerTask('default', ['compile', 'requirejs']);
};
Когда Грант достигает requirejs
, после успешной компиляции проекта, я получаю следующую ошибку:
Выполнение задачи requirejs: compile (requirejs) { [Ошибка: Ошибка: отсутствует параметр "name", "include" или "modules" в Function.build.createConfig (C:\Users\myuser\Documents\myproject\node_modules\grunt-contrib-requirejs\node_modules\requirejs\bin\r.js:29567:19) ] originalError: [Ошибка: отсутствует опция "name", "include" или "modules"] }
Я могу понять, что отсутствуют параметры, но когда я использую name
Я получаю другие ошибки. Я думаю, что должно быть что-то не так на более общем уровне. Какой правильный формат конфигурации? Спасибо
1 ответ
Это предполагает main.ts
является точкой входа вашего приложения и содержит require.config
раздел с зависимостями вашего приложения (библиотеки и прокладки).
Сначала переместите require.config
раздел из main.ts
и в свой собственный файл, config.ts
, Оставьте загрузочный код приложения в main.ts
,
Затем определите, где вы хотите развернуть этот оптимизированный код приложения. Давайте предположим, что это каталог с именем build
, который параллелен вашему src
а также out
папки.
Обновите ваш Gruntfile, чтобы отразить эту конфигурацию:
requirejs: {
compile: {
options: {
baseUrl: "out",
mainConfigFile: "out/config.js",
modules: [
{ name: "main" }
],
dir: "build",
optimize: "none" // skip compression while debugging
}
}
}
Вы можете прочитать больше о каждом из этих параметров конфигурации на http://requirejs.org/ но вот краткое изложение:
baseUrl
: Где живет исходный код JSmainConfigFile
: Указывает на объект конфигурации, упомянутый выше. Он сообщает плагину, где живут зависимости. Это избавляет от необходимости указывать и обновлять вручную список зависимостей в двух местах.modules
: Это массив загрузочных приложений. В этом случае список из одного,main.js
,dir
: Где будет сгенерировано оптимизированное приложение. Обратите внимание, что ваши зависимости также будут скопированы здесь.optimize
: Я оставил это, чтобы вы могли легко отлаживать полученное приложение под./build
, Удалите его, когда вы счастливы, и плагин оптимизирует (сжимает и разбирает) ваши файлы сборки.