在Ubuntu上获得spidermonkey js的最佳方法?

ovr*_*and 16 javascript ubuntu spidermonkey

我需要在我的工作机器上安装Spidermonkey JS引擎.我正在处理的项目有一个jslint脚本,需要Spidermonkey或类似的js二进制文件.我已经尝试从源代码编译Spidermonkey并陷入依赖地狱.我尝试从ubuntu存储库安装rhino软件包,结果很慢而且坏了.今天早上,我成功编译了Google的V8引擎并按照此处的说明构建了v8jslint:

http://blog.stevenreid.co.uk/2011/06/27/jslint-command-line-tool-powered-by-v8/

v8jslint工作,但一次只能lint一个文件.例如,

$ v8jslint foo/*.js
Run Code Online (Sandbox Code Playgroud)

如果我在foo下有a.js,b.js和c.js,v8jslint只会lint a.js. 轻松修复:我可以为此编写一个bash脚本.更大的问题是v8jslint与我们的构建服务器上的Spidermonkey jslint不兼容.有没有人在最近的Ubuntu版本上构建Spidermonkey,或者知道一个好的解决方法?

eas*_*sel 20

您可以从源代码构建,但是在ubuntu上仍然可以使用蜘蛛猴,它刚刚被重命名为"libmozjs".安装"libmozjs-24-bin"然后将其称为"js24"或将symlink/usr/bin/js24称为"js",如下所示:

sudo apt-get install libmozjs-24-bin; sudo ln -sf /usr/bin/js24 /usr/bin/js
Run Code Online (Sandbox Code Playgroud)

  • `sudo apt-get install libmozjs-24-bin; sudo ln -sf/usr/bin/js24/usr/bin/js` (5认同)

ovr*_*and 16

固定它.你需要'autoconf2.13'包.用apt-get安装它.转到Mozilla上的SpiderMonkey源代码页.找到hg存储库(下面链接)并下载Mozilla树的快照.不要克隆它,只需从顶部栏获取存档为.tar.gz或.tar.bz2.

http://hg.mozilla.org/index.cgi/mozilla-central/file/tip

将存档解压缩并cd到根目录.

$ cd js/src
$ autoconf2.13
$ ./configure
$ make
Run Code Online (Sandbox Code Playgroud)

这应该是一个名为js的二进制文件.出于某种原因,当我运行make install时,它没有将js复制到/ bin /中.我只是symlinked/bin/js指向〜/.../ mozilla/js/src/js.Lint脚本现在工作,我不必再开始构建来修复lint错误了:P

资源:

https://developer.mozilla.org/en/SpiderMonkey_Build_Documentation

注意:上面的链接调用该命令autoconf-2.13.我认为这是一个错字; 你想autoconf2.13按照我在代码中写的那样使用.


scy*_*ale 6

更新:

通过启动板ppa看起来像spidermonkey-bin不再可用

当我试图克隆它时,加上v8jslint repo失败了.


sda*_*aau 5

此外,(通过#2:在Ubuntu Lucid中无法使用spidermonkey-bin - 问题 - hallettj/jslint.vim - GitHub),可以将PPA用于Launchpad Engineering:"Canonical Launchpad Engineering"团队:

sudo add-apt-repository ppa:launchpad/ppa
sudo apt-get update
sudo apt-get install spidermonkey-bin
apt-cache show spidermonkey-bin
sudo apt-get install spidermonkey-bin # also installs extra: libmozjs2d

# .. and then: 
$ js --help
JavaScript-C 1.8.0 pre-release 1 2007-10-03
usage: js [-zKPswWxCij] [-t timeoutSeconds] [-c stackchunksize] [-o option] [-v version] [-f scriptfile] [-e script] [-S maxstacksize] [scriptfile] [scriptarg...]
$ js
js> var f = function(){ print("the answer is " + 42); }; 
js> f();
the answer is 42
js> ^C
$
Run Code Online (Sandbox Code Playgroud)