9

如何运行以--harmony模式公开 shell 脚本的全局安装的节点模块?

4

6 回答 6

8

您可以创建一个“node-harnomy”可执行文件:

/usr/local/bin/node-harmony

#!/bin/bash
node --harmony "$@"

和谐-cmd.js

#!/usr/bin/env node-harmony

function* foo() {
}
于 2014-03-29T12:26:02.833 回答
4

TL;DR:只需使用 Node 5+,大多数 ES6 功能将立即可用。


2016年答案

这更像是对 2015 年答案的修正。
原因是 Node.js 和 io.js 已经融合,并且项目现在更加强大,有很多更新,同时保持长期支持 (LTS) 并支持许多 ES6 特性,除了那些 io. js 也支持。

Node.js 5.0.0+ 中可用的显着特性:


2015年答案

我们现在有io.js可用。它可靠、快速且与稳定的 ES6 规范保持同步。

根据您想要的 ES6 功能,您可以完全不使用标志来使用它。从他们的网站

  • 块范围
    • 常量
    • 功能块

      从 v8 3.31.74.1 开始,块范围的声明是有意实现的,对严格模式代码有不合规的限制。开发人员应该意识到,随着 v8 继续向 ES6 规范合规性发展,这将发生变化。

  • 收藏品
    • 地图
    • 弱地图
    • 弱集
    • 发电机
  • 二进制和八进制文字
  • 承诺
  • 新的字符串方法
  • 符号
  • 模板字符串

2014年答案

用你的东西生成第二个 Node 进程怎么样?

#!/usr/bin/env node

var spawn = require("child_process").spawn;
var child = spawn(process.execPath, [ "--harmony", "yourscript.js" ], {
  cwd: __dirname
});

child.stdout.on("data", function( data ) {
  console.log(data);
});

child.stderr.on("data", function( data ) {
  console.error(data);
});

编辑:相信 process.execPath在这种情况下返回节点路径,而不是全局脚本路径。
但是,您始终可以将其更改为node直接,但这可能会破坏 PATH 中没有节点的安装。

于 2014-01-07T22:53:27.920 回答
3

在发现使用参数启动节点的 hack之后,我编写了这个脚本来启动我的应用程序并支持生成器,如果不可用,则会失败并出现明显错误。--harmony如果不受支持,则不执行任何操作。gnode如果您想支持早期的节点版本,您也可以回退到使用。

#!/bin/sh
":" //# comment; exec /usr/bin/env node --harmony "$0" "$@"

var generators = require('generator-supported');
if (generators) {
  require('../lib');
} else {
  console.log('ERROR: node >= v0.11.3 is required for generators');
  process.exit(1);
}

https://gist.github.com/raine/ab56a90442ea1f61a97d

于 2015-02-26T10:08:27.347 回答
-1

使用 Node.js v5.0,您可以使用ES2015严格模式使用 latest。

/bin/server

#!/usr/bin/env node --use_strict

//node.js code.

然后把下面的行 package.json 脚本

scripts: {
   "start": "./bin/server"
}

注意:它适用于 Mac OS,但不确定 Ubuntu 等。

于 2016-02-24T13:50:26.540 回答
-4

截至本答案发布时,唯一可行的解​​决方案是使用gnode的编程 API 并将 bash 脚本分成两个单独的文件。

shellScript.js

#!/usr/bin/env node

require('gnode');
require('./main');

main.js

// main shell script logic using generators
于 2014-01-07T21:15:50.523 回答
-4

只需放在#!/usr/bin/env node --harmony脚本的顶部即可。但是您应该记住,和谐标志在不同的 v8 版本中公开了不同的功能集,因此您可能没有可用的生成器,例如节点 0.10 等。

更新 这可能不适用于某些系统。在 OS X 上测试

于 2014-01-07T20:09:51.793 回答