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

bit*_*shr 9 javascript node.js ecmascript-harmony

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

Pol*_*eer 8

您可以创建"node-harnomy"可执行文件:

在/ usr/local/bin目录/节点和谐

#!/bin/bash
node --harmony "$@"
Run Code Online (Sandbox Code Playgroud)

和谐,cmd.js

#!/usr/bin/env node-harmony

function* foo() {
}
Run Code Online (Sandbox Code Playgroud)


gus*_*nke 4

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


2016年答案

这更像是对2015年答案的修正。
原因是 Node.js 和 io.js 已经融合,项目现在变得更加强大,有大量更新,同时保持长期支持 (LTS) 并支持大量 ES6 功能(除了 io.js 的功能之外)。 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);
});
Run Code Online (Sandbox Code Playgroud)

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

  • 没问题。它仍然不完全是我们所需要的。但我通过谷歌搜索找到了它=> https://github.com/Swatinem/perf-cpuprofile/blob/master/bin/perf-cpuprofile.js (2认同)