Rails资产管道与ES6模块和browserify

时间:2013-12-16 13:55:30

标签: ruby-on-rails-4 commonjs browserify ecmascript-6

我正在尝试使用rails资产管道来实现一些比我希望的更难的东西。

为了干净地构建应用程序,我计划为javascript使用模块系统。为此,我想使用CommonJS模块,但我想使用新的ES6语法编写它们以便将来兼容。

我找到了资产管道的ES6模块转换器扩展,它运行良好,但这只能将其转换为CommonJS格式。我仍然需要将此解析为浏览器所理解的JS。为此,我正在考虑使用Browserify,但我的问题在于结合这两个。

模块转换器基于每个文件工作,但browserify通过检查所需的所有文件来工作。问题是browserify不能使用原始文件,因为它们不是CommonJS格式,它们在ES6中,所以它需要转换后的版本,但是因为这发生在管道中,我不能指向浏览器文件。

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:7)

您可能想尝试Seth Vincent's方法,他使用package.json和npm脚本来运行所有JavaScript任务,并且只在资产管道中使用bundle.js。然后,您可以从Rakefile中执行npm任务。我喜欢他的方法,因为它打开了JS任务的现代JS工具链。

答案 1 :(得分:5)

我的建议是使用browserify-rails gem。对于ES6,您可以使用transform,例如:https://github.com/thlorenz/es6ify

几个月后更新:我仍然建议使用相同的路径,但如果您可以离开资产管道,我强烈建议您直接访问webpack或浏览器。资产管道有一些好处,但根据我的经验,尝试使JavaScript成为一流公民是痛苦的,而且好处大于缺点(对我而言)。