Как собрать библиотеку на основе RactiveJS в один файл JS?
( Смежный вопрос: в чем разница между rv.js и r.js?)
У меня есть ряд компонентов на основе RactiveJS, каждый в своем собственном модуле. Я использую загрузчик rv.js (ссылка выше), упомянутый на сайте Ractive. Мне это нравится, но я хочу использовать это (или что-то подобное) для создания одного JS-файла, который будет работать даже в приложениях не-AMD/RequireJS. Я посмотрел на Almond, но, похоже, он хочет использовать r.js (а не rv.js), и я не уверен, в чем разница или какие изменения мне нужно внести.
Бонусные баллы: есть ли способ запустить все это в Gulp? Я один из тех людей, которые раздражаются, когда ему приходится использовать командную строку, поэтому, пожалуйста, говорите медленно и простите мое невежество:)
1 ответ
Немного поздно, чтобы ответить, извинения за это.
- rv.js - это плагин RequireJS, который загружает компоненты, как если бы они были модулями javascript
- r.js - это оптимизатор RequireJS, используемый для объединения всех файлов и минимизации (именно ваш вариант использования)
RequireJS довольно большой по размеру, и вы не хотите, чтобы он связывался с вашим приложением js во время сборки.
Введите almond.js. Он имитирует разрешение модуля RequireJS, но не имеет кода для обработки фактической загрузки файлов по сети. Результатом является меньший размер файла.
Итак, ваш рабочий процесс будет:
- Вы используете RequireJS во время разработки
- Используйте rv.js, как вы уже, для загрузки компонентов ractive
- Когда пришло время для сборки, вы используете r.js для сборки
- И убедитесь, что almond.js заменяет RequireJS в окончательном построенном файле js
Теперь я использую grunt, и для этого есть плагин: https://github.com/gruntjs/grunt-contrib-requirejs
Для gulp я предлагаю https://www.npmjs.com/package/gulp-requirejs-optimize
У него есть опции для замены requirejs на almond во время процесса сборки, если вы посмотрите документацию на этой странице.
Надеюсь, это поможет.