在--harmony模式下运行节点shell脚本

时间:2014-01-07 19:36:15

标签: javascript node.js ecmascript-harmony

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

6 个答案:

答案 0 :(得分:8)

你可以创建一个" node-harnomy"可执行文件:

<强>的/ usr / local / bin中/节点和谐

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

<强>和谐-cmd.js

#!/usr/bin/env node-harmony

function* foo() {
}

答案 1 :(得分:4)

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


2016回答

这更像是2015年答案的修正案 The reason is because Node.js and io.js have converged,除了io.js支持的项目之外,项目现在更加强大,在保持长期支持(LTS)和supporting lots of ES6 features的同时进行了大量更新。

Node.js 5.0.0 +中可用的显着功能:


2015回答

我们现在有io.js可用。它具有稳定的ES6规格,可靠,快速,并且是最新的。

根据您想要的ES6功能,您可以使用而不使用任何标记From their website

  • 阻止范围界定
    • 常量
    • 功能在块
        

      从v8 3.31.74.1开始,块作用域   声明是有意使用不合规的   严格模式代码的限制。开发人员应该意识到这一点   随着v8继续符合ES6规范的要求,将会改变。

  • 集合
    • 地图
    • WeakMap
    • WeakSet
    • 发电机
  • 二进制和八进制文字
  • 承诺
  • 新字符串方法
  • 符号
  • 模板字符串

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中没有节点的安装。

答案 2 :(得分:3)

在发现带有参数的起始节点的a 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

答案 3 :(得分:-1)

使用Node.js v5.0,您可以使用最新的/^[CE]/ {ON=1; next} /^S/ {if (ON) print} {ON=0} 使用严格模式。

ES2015

/bin/server

然后将下面的行放在package.json脚本

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

//node.js code.
  

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

答案 4 :(得分:-4)

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

<强>更新 这可能无法在某些系统上运行。在OS X上测试

答案 5 :(得分:-4)

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

<强> shellScript.js

#!/usr/bin/env node

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

<强> main.js

// main shell script logic using generators