JSHint:排除预处理器指令。不完全是

时间:2015-12-07 04:32:52

标签: jshint atom-editor extendscript preprocessor-directive

我正在使用Adobe Extendscript,它= = javascript *,我在Atom中使用Atom JSHint包。 Extendscript是Photoshop和After Effects等Adobe应用程序的脚本框架。 Adobe确实创建了一个IDE,但它真的很虚弱,所以我用Atom编写,然后切换到“Extendscript Toolkit”来运行我的脚本。总之...

Adob​​e允许您使用像#include "myUsefulFunctions.jsx"这样的C风格预处理程序指令,这样您就可以在库中保留可重用的内容,就像真正的编程语言一样。

问题是JSHint linter在页面顶部看到了我的C风格的预处理器指令,吓坏了,放弃了。为了实际使它得到我的代码lint我必须注释预处理器指令,然后记得在运行代码之前取消注释它们。这意味着每次测试时至少会有3或4次额外的击键,你们都知道这是 The。最差的。事情。如初。

因此,为了节省六次击键,我一直在研究JSHint的设置。到目前为止我发现的任何内容似乎都没有关系。有没有办法全局让JSHint忽略像#this这样的行,或者在文件中本地使它跳过一两行?

*还是===?我对JS对真相的态度感到困惑。

3 个答案:

答案 0 :(得分:3)

我也试图弄清楚很久,直到找到最佳解决方案。 而不是使用:

#target aftereffects

您可以使用:

//@target aftereffects

我没有找到上述解决方案的任何文件。

我刚刚通过网络在脚本中找到它,我尝试了它并且它有效。

而是使用:

#include "some/path/to/file.jsx"

JavaScript Tools Guide中所述:

  

evalFile()

     

$ .evalFile(path [,timeout])

     

从磁盘加载JavaScript脚本文件,对其进行评估,然后返回评估结果。

     

路径:文件的名称和位置。

     

超时:可选。如果无法评估脚本,则在返回undefined之前等待的毫秒数。默认值为10000毫秒。

您可以使用:

$.evalFile("some/path/to/file.jsx");

差异在于#include

  

包含来自其他位置的JavaScript源文件。   将指定文件的内容插入该位置的此文件中   这句话。

答案 1 :(得分:1)

在jshint中,您可以通过向行添加ignore语句来忽略行。

 #target aftereffects //jshint ignore:line

或者你可以忽略这样的整个块。

// Code here will be linted with JSHint.
/* jshint ignore:start */
// Code here will be ignored by JSHint.
/* jshint ignore:end */

(顺便说一下,//@target aftereffects很酷。感谢你指出这一点)

答案 2 :(得分:0)

我更改了我使用的JSHint包,现在不需要解决方法。

对于在Atom开发Extendscript的其他人,我推荐的是这一个:Linter-JSHint。它是Atom Linter软件包的插件,因此您也需要安装它。

然后,一旦你完成了这个,就用它来忽略一个块:

// Code here will be linted with JSHint.
/* jshint ignore:start */
// Code here will be ignored by JSHint.
#includepath  "lib"
#include myBrilantLib.jsx
/* jshint ignore:end */

或单行:

ignoreThis(); // jshint ignore:line