Rails конвейер ресурсов с модулями ES6 и браузером

Я пытаюсь реализовать что-то с конвейером ресурсов rails, который оказывается более сложным, чем я надеялся.

Чтобы структурировать приложение, я планирую использовать систему модулей для javascript. Для этого я хочу использовать модули CommonJS, но я хотел бы написать их, используя новый синтаксис ES6 для будущей совместимости.

Я нашел расширение транспилятора модуля ES6 для конвейера активов, которое работает хорошо, но это только преобразует его в формат CommonJS. Мне все равно нужно получить это в JS, что браузер понимает. Для этого я ищу использование Browserify, но моя проблема заключается в объединении этих 2.

Модуль транспилятора работает в каждом файле, но браузер работает, проверяя все необходимые файлы. Проблема в том, что браузер не может использовать исходные файлы, так как они не в формате CommonJS, они находятся в ES6, поэтому для него требуются перегруженные версии, но поскольку это происходит в конвейере, я не могу указать браузеру на файл.

Есть ли какие-нибудь способы?

Ответ 1

Моя рекомендация - использовать драгоценный камень browserify-rails. Для ES6 вы использовали бы transform, например, этот: https://github.com/thlorenz/es6ify

Обновление через несколько месяцев: я по-прежнему рекомендую один и тот же путь, но если вы можете выйти из конвейера активов, я настоятельно рекомендую перейти на webpack или напрямую на браузер. Конвейер активов имеет некоторые преимущества, но, по моему опыту, попытка сделать JavaScript первоклассным гражданином болезненна, и преимущества перевешивают недостатки (для меня).

Ответ 2

Возможно, вы захотите попробовать подход Seth Vincent's, где он использует сценарии package.json и npm для запуска всех задач JavaScript и использует только bundle.js в конвейер. Затем вы можете выложить на npm задачи из своего Rakefile. Мне нравится его подход, потому что он открывает современную цепочку инструментов JS для задач JS.