我该如何在Ubuntu上安装JSLint?

30

如何在Ubuntu上安装JSLint?

我从http://www.javascriptlint.com/download.htm下载了源代码jsl-0.3.0-src.tar.gz,然后将其提取到一个名为jsl-0.3.0的目录中,放在我的桌面上。 然后我将它移动到/usr/local/bin中,这是我已经阅读过的PATH路径。 我还想提一下,我已经安装了Rhino 1.7

当我尝试从终端运行jsl时,我得到以下消息:

No command 'jsl' found, did you mean:
 Command 'jls' from package 'sleuthkit' (universe)
 Command 'js' from package 'rhino' (main)
 Command 'sl' from package 'sl' (universe)
 Command 'fsl' from package 'fsl' (multiverse)
jsl: command not found

我该如何正确安装JSLint?


8
标记为“离题”关闭?真的吗?还有谁会使用JSLint呢? - boatcoder
具有讽刺意味的是,它在大多数软件包管理器中并不存在,因为“该软件应用于善良而非邪恶”——这使得它被认为不是“开源”的。 - NoBugs
@NoBugs:你可以使用JSHint - serv-inc
1
对我来说,这似乎是程序员主要使用的工具。投票重新开放。 - Jeffrey Bosboom
4个回答

61

如何在Ubuntu上安装JSLint:

  1. 安装nodejs(包含npm,Node包管理器):

  2. sudo apt-get install nodejs
    
  3. 安装node-jslint。可以选择全局安装:

    sudo npm install -g jslint
    

    或者本地安装,并将其包含在$PATH中:

    npm install jslint
    

    并将以下行添加到您的.bashrc文件中(根据需要调整版本号)

    alias jslint='~/.npm/jslint/0.1.8/package/bin/jslint.js'
    

这很完美,因为我目前正在学习Node,但是当我执行$ npm install -g jslint时,我遇到了一个错误,我在我的问题中作为更新发布了。使用sudo会解决这个问题吗? - user883807
1
如果您在使用命令 sudo apt-get install npm 安装 npm 后,想要使用该命令 sudo npm install -g jslint 进行全局安装 jslint,则需要加上 sudo - gmunkhbaatarmn
看起来是一个简单的解决方案,但当我运行npm install时,它只创建了一个.node_module文件夹。我仍然无法在shell中运行jslint。我们应该如何拥有一个可执行文件? - FMaz008
1
你可能想把别名放在你的~/.bash_aliases文件中,而不是你的.bashrc文件中。你可能想要的别名是jsl=。 - boatcoder
@PeterNore:下一次直接编辑答案怎么样?而不是抱怨该答案需要编辑?注意:我已经自己编辑了它。 - Dan Dascalescu
显示剩余5条评论

19

这里是我按照指南在Ubuntu 10.10 / Vim 7.3(以及Mac OS X)上使jslint工作的步骤。

编辑

所以,我刚刚注意到给出链接中有一个错误。这里是正确的步骤(假设您已经下载并解压缩存档到桌面):

$ cd /path/to/jsl-0.3.0/src
$ make -f Makefile.ref
$ cp Linux_All_DBG.OBJ/jsl /usr/local/bin/jsl

此时,您可以打开一个新的终端窗口并键入$ jsl以显示快速帮助,或者从Vim中调用它,或直接在终端中的文件上使用。

编辑完毕

  • /usr/local/bin不是您的"PATH",它只是可能成为您的PATH环境变量的许多目录之一。 $ echo $PATH将告诉您这些目录在哪里,因此您可以将jsl可执行文件放置在其中。 您还可以将其放在其他地方并将别名添加到您的.bashrc中。

  • 为什么您期望能够从rhino运行jslint


当我执行 echo $PATH 命令时,我会看到由冒号分隔的路径列表。其中包括 /usr/local/bin。所以我在 /usr/local/bin/ 目录下创建了一个 jsl 文件夹,然后将整个 jsl-0.3.0 文件夹放入其中,该文件夹包含 jsl 可执行文件。因此,jsl 的完整路径为 /usr/local/bin/jsl/jsl-0.3.0/src/Linux_All_DBG.OBJ。但是,当我输入 jsl 命令时,我仍然会收到与我在帖子中提到的相同的 jsl: command not found 错误。感谢你迄今为止所做的一切。 - user883807
你必须先构建 jsl,然后使生成的可执行文件在整个系统中可访问。不过,这里有一个错误。我会编辑我的回答。 - romainl

2
您说您只是将源代码复制到了 /usr/local/bin。您需要进行编译。请按照 README.html 中的构建说明进行操作。

Unix

  • 使用 'gmake -f Makefile.ref' 进行构建。要编译优化代码,请在 gmake 命令行中传递 BUILD_OPT=1,或在环境或 Makefile.ref 中预设它。注意:不要尝试使用 Makefile 来构建独立的 JavaScript 引擎。此文件仅用于构建 Mozilla 浏览器中的 JS 引擎。
  • 每个构建 JS 的平台都必须在 js/src/config 目录中拥有一个 *.mk 配置文件。配置文件指定要使用的编译器/链接器,并允许自定义命令行选项。到目前为止,构建系统已在 Solaris、AIX、HP/UX、OSF、IRIX、x86 Linux 和 Windows NT 上进行了测试。
  • 大多数平台都可以使用供应商提供的编译器或 gcc。 (除了 HP 构建只能使用本地编译器。在该平台上,gcc 无法正确链接共享库。如果有人知道解决方法,请告诉我们。)
  • 如果定义了 JS_LIVECONNECT,则 gmake 将进入 liveconnect 目录,在构建 JS 引擎后构建 LiveConnect。
  • 要构建二进制分发(头文件、库、二进制文件的 zip 打包文件),请检出 mozilla/config 和 mozilla/nsprpub/config。使用 'gmake -f Makefile.ref nsinstall-target all export ship'
至于您关于差异的问题。下载页面上说其中一个是用 JavaScript 本身编写的。

我们都站在巨人的肩膀上。我特别要感谢 Douglas Crockford 在 JSLint 上的工作。这个 lint 本身是用 JavaScript 编写的,是一个有趣而相当复杂的脚本。Crockford 关于良好编码实践的想法为这些 lint 规则提供了跳板。


Ubuntu没有gmake,所以我使用了相同的make。它没有出现任何错误,所以我认为它已经构建成功了,但是我仍然无法通过在终端中键入jsl命令或运行rhino(或js)并键入jslint来运行JSLint。如果我尝试后者,我会得到Error: "jslint" is not defined.的错误提示。 - user883807
通常情况下,您需要在输入“make install”之后将二进制文件和必要的文件复制到bin目录中。输入“make”是否在源目录中生成了“jsl”二进制文件? - Drew Chapin
执行 make -f Makefile.ref 命令后,创建了一个名为 Linux_All_DBG.OBJ 的目录,其中包含一个名为 jsl 和另一个名为 jsl.o 的文件,以及许多其他文件。此外,在 srcLinux_All_DBG.OBJ 目录中无法使用 make install 命令,出现错误信息 make: *** No rule to make target install'. Stop.`。 - user883807
进入目录 Linux_All_DBG.OBJ 并键入 ./jsl,如果这样做可以实现您的需求,则将该文件移动到 /usr/local/bin - Drew Chapin
好的,我将jsl文件移动到了/usr/local/bin/目录中,现在无论我在系统的任何位置输入jsl,它都可以正常运行。谢谢您!但是,对于js-0.3.0目录和其中的Linux_All_DBG.OBJ目录,我应该怎么处理? - user883807
它应该可以安全删除。 - Drew Chapin

1
请查看您的“jsl-0.3.0/src/README.html”文件。它说:
1)您有一个“源代码包”。您需要使用C编译器“构建”它,然后安装您的构建。
2)这不仅仅是JSLint。它是整个JavaScript引擎。根据自述文件:
“这是JavaScript参考(JSRef,现在更为人所知的是SpiderMonkey)实现的自述文件。它由构建约定和说明、源代码约定、设计演练以及对源文件的简要逐个文件描述组成。JSRef构建了一个包含JavaScript运行时(编译器、解释器、反编译器、垃圾收集器、原子管理器、标准类)的库或DLL。然后编译一个小的“shell”程序,并将其与库链接起来,以制作可以交互地使用和用于运行脚本的测试.js文件的解释器。该代码没有依赖于Mozilla代码库的其他部分。”
3)这是Douglas Crockford的原始JSLint页面:

http://www.jslint.com/

4)以下是一个很好的例子,展示了如何在您自己的电脑上本地使用JSLint:

http://code.google.com/p/js-ria-tools/wiki/JSLint

5) 你说你已经有了Rhino - 很好。在Google上,你会发现很多过时的链接指向 www.jslint.com/rhino。这是为什么 - 以及与当前Rhino相关信息的链接:

http://hustoknow.blogspot.com/2011/02/jslint-and-rhino-support.html

希望这能帮到你!


谢谢。我通过 make -f Makefile.ref 构建了源代码,这个过程非常快速,并且没有发现任何错误,但是我仍然无法在 JS 解释器中使用 jslint(该解释器是通过 jsrhino 调用的)。同时在终端中运行 jsl 也无法正常工作。您有什么想法吗? - user883807

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接