带有rails资产管道的JSHint需要

时间:2015-12-01 18:09:23

标签: javascript ruby-on-rails asset-pipeline jshint

当运行jshint来验证JS代码时,我经常会遇到像

这样的错误
line 264, col 11, 'Cookies' is not defined.

Cookie来自

//= require js.cookie

编译为Rails资产管道的一部分,因此JSHint不知道它。

有没有办法设置它,以便JSHint在一个包含所有依赖项的文件上运行?还是有其他选择吗?

1 个答案:

答案 0 :(得分:1)

您可以考虑使用globals选项使jshint知道共享全局变量。

如果以上证明太繁琐,那么在通过链轮运行文件后运行jshint - 即。运行rake assets:precompile,然后在public/assets生成的文件上运行jshint。

但我能推荐的最好的行动方案是不同的:

您应该考虑使用适当的模块系统,而不是使用sprockets进行javascript依赖关系管理。这将缓解共享全局变量的根本问题(这被广泛认为是糟糕的编程实践)。

虽然社区已经multiple module systems提出了不同程度的社区接受度 - 但现在最好的选择是拥抱ES6 modules standard。最终有一个标准化的模块化方法是很好的。我最近写了一篇关于将ES6模块与rails集成的简短guide

简而言之,ES6模块标准是今天组织javascript的最佳选择,而不是像AMD,CommonJS或Sprockets指令这样的解决方案,这些解决方案是在没有模块化JavaScript的标准化解决方案可用的时代开发的。